我正在尝试使用Rails 3.1设置Ember.js,我在Firebug控制台中收到以下错误:
uncaught exception: Error: <(subclass of App.ListOrdersView):ember201> - Unable to find template "app/templates/orders/list".
我跟着this guide。这是我的清单文件,它正确加载所有js:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require vendor/ember
//= require vendor/ember-rest
//= require_tree ./../lib
//= require app/app
//= require_tree ./../app/models
//= require_tree ./../app/controllers
//= require_tree ./../app/views
//= require_tree ./../app/helpers
//= require_tree ./../app/templates
//= require_self
这是车把模板app / templates / order / list.handlebars:
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{{#each orders}}
{{view App.ShowOrderView orderBinding="this"}}
{{/each}}
</tbody>
</table>
Rails查看文件app / views / orders / index.html.haml
%script{:type => "text/x-handlebars"}
= hb 'view App.ListOrdersView'
:javascript
$(function() {
App.ordersController.loadAll(#{@orders.to_json.html_safe});
});
最后是Gemfile中的Ember.js的宝石:
# Ember
gem 'ember-rails'
gem 'hamlbars', :git => "https://github.com/jamesotron/hamlbars.git"
gem 'rasputin'
答案 0 :(得分:1)
检查路径,也许它们应该是
//= require_tree ./app/models
//= require_tree ./app/controllers
//= require_tree ./app/views
//= require_tree ./app/helpers
//= require_tree ./app/templates
无法找到模板app / templates / order * s * / list
这是车把模板app / templates / order / list.handlebars:
查看 s
中的路径差异答案 1 :(得分:1)
您应该使用ember-rails
或rasputin
,但同时使用这两种宝石可能会导致不可预测的行为。由于他们都试图注册和预编译你的把手模板,因此它们的目的是多余的,但它们的用法不同。
如果您查看rasputin
的自述文件,您会看到模板在其路径中没有templates
时注册。因此,如果您想使用此gem,则需要在app/orders/list
中将模板声明为app/templates/orders/list
而不是App.ListOrdersView
。
答案 2 :(得分:0)
我在更改模板定义和ember gems时遇到了类似的问题。虽然错误是相同的(抱怨模板路径 - 即使路径看起来都是正确的),但只需rake assets:clean
即可完成整理。