2013-10-26 39 views
2

請原諒我,因爲我是Ember(以及整個Javascript世界)的新手。我與ember-rails寶石創建一個Rails應用程序,我們把它叫做 '疣豬'基本的灰燼模板不能在Rails中渲染

application.js文件如下:

//= require jquery 
//= require jquery_ujs 
//= require handlebars 
//= require ember 
//= require ember-data 
//= require_self 
//= require warthog 
Warthog = Ember.Application.create(); 
//= require bootstrap 

接下來是application.html.haml文件

%html 
    %head 
    %title Warthog 
    = stylesheet_link_tag "application", :media => "all" 
    = javascript_include_tag "application" 
    = javascript_include_tag 'templates/application' 

對於一些測試輸出,我有一個字符串在我的application.handlebars文件中

This is a test 

問題是javascripts/templates/application.handlebars未呈現。

這裏是網頁的源請求完成後:

<html> 
    <head> 
    <title>Warthog</title> 
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" /> 
    <script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
    <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
    <script src="/assets/handlebars.js?body=1" type="text/javascript"></script> 
    <script src="/assets/ember.js?body=1" type="text/javascript"></script> 
    <script src="/assets/ember-data.js?body=1" type="text/javascript"></script> 
    <script src="/assets/application.js?body=1" type="text/javascript"></script> 
    <script src="/assets/store.js?body=1" type="text/javascript"></script> 
    <script src="/assets/controllers/application_controller.js?body=1" type="text/javascript"></script> 
    <script src="/assets/templates/application.js?body=1" type="text/javascript"></script> 
    <script src="/assets/routes/application_routes.js?body=1" type="text/javascript"></script> 
    <script src="/assets/router.js?body=1" type="text/javascript"></script> 
    <script src="/assets/warthog.js?body=1" type="text/javascript"></script> 
    <script src="/assets/templates/application.js?body=1" type="text/javascript"></script> 
    <script src="//www.google.com/jsapi" type="text/javascript"></script> 
    <script src="/assets/chartkick.js?body=1" type="text/javascript"></script> 
    <meta content="authenticity_token" name="csrf-param" /> 
    <meta content="afE+P0e6I/KDeVpg/kLi8RvsPAAyYOwD6rE=" name="csrf-token" /> 
    </head> 
    <body> 
    <div id='container'> 

    </div> 
</body> 
</html> 

和控制檯日誌

DEBUG: ------------------------------- ember.js?body=1:394 
DEBUG: Ember.VERSION : 1.0.0 ember.js?body=1:394 
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:394 
DEBUG: jQuery.VERSION : 1.10.0 ember.js?body=1:394 
DEBUG: ------------------------------- ember.js?body=1:394 
Assertion failed: The view helper only takes a single argument ember.js?body=1:394 
(anonymous function) ember.js?body=1:394 
Ember.assert ember.js?body=1:53 
(anonymous function) ember.js?body=1:25789 
anonymous application.js?body=1:10 
(anonymous function) handlebars.js?body=1:2214 
Ember.View.Ember.CoreView.extend.render ember.js?body=1:20335 
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js?body=1:19272 
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js?body=1:20915 
superWrapper ember.js?body=1:1218 
(anonymous function) ember.js?body=1:19253 
Ember.Instrumentation.instrument ember.js?body=1:1662 
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js?body=1:19252 
Ember.View.Ember.CoreView.extend.createElement ember.js?body=1:20737 
Ember.merge.insertElement ember.js?body=1:21686 
Ember.View.Ember.CoreView.extend._insertElement ember.js?body=1:20665 
DeferredActionQueues.flush ember.js?body=1:5459 
Backburner.end ember.js?body=1:5545 
Backburner.run ember.js?body=1:5584 
Ember.run ember.js?body=1:5915 
(anonymous function) ember.js?body=1:34656 
fire jquery.js?body=1:3065 
self.fireWith jquery.js?body=1:3177 
jQuery.extend.ready jquery.js?body=1:434 
completed jquery.js?body=1:105 
Uncaught TypeError: Cannot read property '0' of undefined ember.js?body=1:25589 
EmberHandlebars.ViewHelper.Ember.Object.create.helper ember.js?body=1:25589 
(anonymous function) ember.js?body=1:25797 
anonymous application.js?body=1:10 
(anonymous function) handlebars.js?body=1:2214 
Ember.View.Ember.CoreView.extend.render ember.js?body=1:20335 
Ember.CoreView.Ember.Object.extend._renderToBuffer ember.js?body=1:19272 
Ember.View.Ember.CoreView.extend._renderToBuffer ember.js?body=1:20915 
superWrapper ember.js?body=1:1218 
(anonymous function) ember.js?body=1:19253 
Ember.Instrumentation.instrument ember.js?body=1:1662 
Ember.CoreView.Ember.Object.extend.renderToBuffer ember.js?body=1:19252 
Ember.View.Ember.CoreView.extend.createElement ember.js?body=1:20737 
Ember.merge.insertElement ember.js?body=1:21686 
Ember.View.Ember.CoreView.extend._insertElement ember.js?body=1:20665 
DeferredActionQueues.flush ember.js?body=1:5459 
Backburner.end ember.js?body=1:5545 
Backburner.run ember.js?body=1:5584 
Ember.run ember.js?body=1:5915 
(anonymous function) ember.js?body=1:34656 
fire jquery.js?body=1:3065 
self.fireWith jquery.js?body=1:3177 
jQuery.extend.ready jquery.js?body=1:434 
completed jquery.js?body=1:105 

解決方案:該錯誤是內灰燼我的控制器和路線文件;我刪除那些現在的頁面呈現

+0

如果將它命名爲'application.js.handlebars',會發生什麼? – josh

+0

同樣的問題,仍然不會渲染 – Anconia

+0

將'application.html.haml'文件更改爲不包含'templates/application'文件,因爲它已經包含在'application.js'文件中。另外,如果你不一定需要'ApplicationController'或'ApplicationRoute',你可以安全地不定義它們,而Ember將處理它。 – josh

回答

3

確保您的應用程序車把模板被注入這種格式

<script type="text/x-handlebars" data-template-name="application"> 

</script> 

<script type="text/x-handlebars" > 

</script> 

命名爲灰燼超級重要的,如果你的模板注入不同的名稱,如:

<script type="text/x-handlebars" data-template-name="templates/application"> 

</script> 

然後你想要d表示使用與默認模板名稱不同的模板名稱的應用程序視圖。

Warthog.ApplicationView = Ember.View.extend({ 
    templateName: 'templates/application' 
}) 
+0

application.handlebars模板是否不會在每個請求中自動呈現? – Anconia

+0

我也在使用ember-rails gem,並不認爲有必要包含腳本標籤 – Anconia

+0

什麼是呈現的客戶端? – Kingpin2k