我试图在骨干模板中渲染表单,
template: _.template(
'<li><%= form_for :movie, url: movie_path do |f| %><% end %></li>'
),
但它在Chrome控制台中给我以下错误。
Uncaught SyntaxError: Unexpected token :
可能是因为我在这种情况下使用erb代码,有没有人知道解决方案?
答案 0 :(得分:1)
我有种感觉这与代码有关&#34;或者&#39;导致问题的原因是,我建议使用Firebug(Firefox插件)来调试代码,因为IMO比Chrome控制台更适合调试HTML和JS。
一般来说,在模板JS中包含ERB代码并不是那么好,我建议通过以下方式解决这个问题:
不要使用默认的下划线插值,因为很容易将它与ERB代码混合使用,而ERB代码也需要不同的ERB代码。我用:
Backbone.$ = $; // I have no idea why backbone complains about that stuff, but this thing solves the problem.
_.templateSettings = {
interpolate: /\$\{\{(.+?)\}\}/g,
escape: /\%\{\{(.+?)\}\}/g,
evaluate: /\{\{(.+?)\}\}/g
}; // set template interpolation settings
您可以按照自己的方式设置这些选项
制作一个普通的HTML部分,并将其中的内容包装在模板代码中,如下所示:
<script id="something_template" type="text/template">
<li><%= form_for :movie, url: movie_path do |f| %><% end %></li>
</script>
注意:不要混淆ruby代码&lt;%=%&gt;和主干JS代码%{{}}
使用javascript渲染此部分,我建议在骨干视图类的渲染方法
render: function () {
$("#container").empty();
$(_.template($("#something_template").html(), {
// variables go here
})).appendTo("#container");
}
希望这个提示可以帮助您解决问题。我只能说它适用于我的项目。