提问者:小点点

余烬轨道


我正在开发一个enpe-rails应用程序,它通过rails管道预编译Handlebar资产。一切都通过bundle update更新到最新版本。

当我们加载索引时,余烬数据不会呈现到列表中,尽管(app/view/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/资产/javascricript/app/view/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)。尽管如此,浏览器控制台(GoogleChrome版本25.0.1364.172)一直返回以下内容:

未捕获错误:断言失败:您指定了templateName应用程序/模板/gigs/列表

这是应用程序/资产/javascript/应用程序/模板/gigs/list. handlebar中的文件:

<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 emer.js:339 Handlebar.VERSION:1.0.0-rc.3 emer.js:339 jQuery.VERSION:1.9.1

    -编辑:我刚刚发现,在index. html.erb中包含对事件视图的Handlebar引用也会导致该模板消失:

    <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个答案

    匿名用户

    应用程序/模板/默认从模板名称中删除。尝试gigs/list

    匿名用户

    对我来说,它在剥离模板时有效,例如app/gigs/list