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,

Другие вопросы по тегам