ember-rails & handlebars: указанное templateName не существует для одного представления, но существует для всех остальных
Я работаю над приложением ember-rails, которое предварительно компилирует ресурсы Handlebars через конвейер rails. Все обновляется до последних версий через bundle update
,
Когда мы загружаем индекс, данные ember не отображаются в списке, несмотря на (app/ views / gigs / index.html.erb):
<h1>Gigs</h1>
<script type="text/x-handlebars">
{{ view App.ListGigsView }}
</script>
<script type="text/javascript">
$(function() {
App.gigsController.loadAll(<%= @gigs.to_json.html_safe %>);
});
</script>
Итак, я проверил ListGigsView, который содержит следующее (app/ assets / javascripts / app / views / gigs / list.js):
App.ListGigsView = Ember.View.extend({
templateName: 'app/templates/gigs/list',
gigsBinding: 'App.gigsController',
showNew: function() {
this.set('isNewVisible', true);
},
hideNew: function() {
this.set('isNewVisible', false);
},
refreshListing: function() {
App.gigsController.findAll()
}
});
Похоже, что templateName указывает нормально (это похоже, скажем, в new.js). Тем не менее консоль браузера (Google Chrome версии 25.0.1364.172) продолжает возвращать следующее:
Uncaught Error: assertion failed: You specified the templateName app/templates/gigs/list for <App.ListGigsView:ember194>, but it did not exist.
Вот файл в app/assets/javascripts/app/templates/gigs/list.handlebars:
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{{#each gigs}}
{{view App.ShowGigView gigBinding="this"}}
{{/each}}
{{#if isNewVisible}}
<tr>
<td>*</td>
<td>
{{view App.NewGigView}}
</td>
</tr>
{{/if}}
</tbody>
</table>
<div class="commands">
<a href="#" {{action "showNew"}}>New Gig</a>
<a href="#" {{action "refreshListing"}}>Refresh Listing</a>
</div>
Почему шаблон не отображается? Бег Ember.TEMPLATES
в консоли возвращает все остальные ссылки шаблона представления в целости:
> Ember.TEMPLATES
=> Object {app/templates/gigs/edit: function, app/templates/gigs/event: function, app/templates/gigs/show: function, application: function}
Но не тот для list
, Почему этот шаблон AWOL?
Для справки, я запускаю следующее в соответствии с консолью браузера:
Ember.VERSION: 1.0.0-rc.1 ember.js: 339 Handlebars.VERSION: 1.0.0-rc.3 ember.js: 339 jQuery.VERSION: 1.9.1
-Edit: я только что обнаружил, что включение ссылки Handlebars в представление Event в index.html.erb также приводит к исчезновению этого шаблона:
<h1>Gigs</h1>
<script type="text/x-handlebars">
{{ view App.ListGigsView }}
</script>
<script type="text/x-handlebars">
{{ view App.EventView }}
</script>
<script type="text/javascript">
$(function() {
App.gigsController.loadAll(<%= @gigs.to_json.html_safe %>);
});
</script>
Почему это происходит? И как мне этого избежать?
2 ответа
app/templates/
по умолчанию удаляется из имени шаблона. Пытаться gigs/list
,
Для меня это сработало при зачистке templates
например, app/gigs/list
,