私のアプリについて:
- Rails 3.2.6 と backbone.js (backbone-on-rails gem) およびハンドルバー テンプレート エンジンを使用しています。
- ルートとビューを作成すると、うまく機能します。私の見解:
el: $('#lorem'),
render: function(){
var js = this.collection.toJSON();
var template = Handlebars.compile($("#lorem2").html());
$(this.el).html(template({articles: js}));
console.log(js);
return this;
}
- テンプレートを作成しました (assets dir: assets/templates/peoples/index.hbs):
<script id="lorem2" type="text/x-handlebars-template">
{{#each articles}}
{{this.name}}
{{/each}}
</script>
ページを更新すると、次のエラー メッセージが表示されます。
キャッチされていない TypeError: null のメソッド 'match' を呼び出せません
テンプレートファイルが間違っている可能性があると思います:
<script src="/assets/templates/people/index.js?body=1" type="text/javascript"></script>
これには以下が含まれます:
(function() {
this.HandlebarsTemplates || (this.HandlebarsTemplates = {});
this.HandlebarsTemplates["people/index"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
helpers = helpers || Handlebars.helpers;
var buffer = "", stack1, foundHelper, self=this, functionType="function", helperMissing=helpers.helperMissing, undef=void 0, escapeExpression=this.escapeExpression;
buffer += "<div class=\"entry\">\n <h1>";
foundHelper = helpers.title;
stack1 = foundHelper || depth0.title;
if(typeof stack1 === functionType) { stack1 = stack1.call(depth0, { hash: {} }); }
else if(stack1=== undef) { stack1 = helperMissing.call(depth0, "title", { hash: {} }); }
buffer += escapeExpression(stack1) + "</h1>\n <div class=\"body\">\n ";
foundHelper = helpers.body;
stack1 = foundHelper || depth0.body;
if(typeof stack1 === functionType) { stack1 = stack1.call(depth0, { hash: {} }); }
else if(stack1=== undef) { stack1 = helperMissing.call(depth0, "body", { hash: {} }); }
if(stack1 || stack1 === 0) { buffer += stack1; }
buffer += "\n </div>\n</div>\n";
return buffer;});
return HandlebarsTemplates["people/index"];
}).call(this);