1

Railsパイプラインを介してHandlebarsアセットをプリコンパイルするember-railsアプリを作成しています。経由ですべてが最新バージョンに更新されますbundle update

インデックスをロードすると、(app/views/gigs/index.html.erb)にもかかわらず、ember データはリストにレンダリングされません。

<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

-編集: index.html.erb の Event ビューへの Handlebars 参照を含めると、そのテンプレートも消えることがわかりました。

<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>

なぜこれが起こるのですか?どうすればそれを回避できますか?

4

2 に答える 2

2

app/templates/デフォルトでは、テンプレート名から削除されます。試してみてくださいgigs/list

于 2013-03-20T16:22:36.570 に答える
0

私にとっては、剥がすときにうまくいきましtemplatesapp/gigs/list

于 2013-06-12T14:59:15.070 に答える