我是一名试图学习Backbone的rails开发人员然后我遇到了这个问题:由于Underscore
模板包含<%=%>
之类的符号,我猜模板不能包含在{{1}中文件,所以是否可以为每个模板分配一个rails?它应该延伸到什么程度?
答案 0 :(得分:12)
您可以在开始标记中使用两个%
来转义erb符号,并将主干模板放在rails视图中:
<script type='text/template' id="my-template'>
<%%= name %>
</script>
将在您的页面中输出以下内容:
<script type='text/template' id="my-template'>
<%= name %>
</script>
将您的Backbone模板直接放在rails视图中是恕我直言,这是您尝试学习时的最佳选择。你已经在尝试新的概念,不需要增加另一个障碍。
答案 1 :(得分:4)
从Rails 3.1开始,它提供了两个使Backbone模板更容易使用的东西:资产管道和自动JST(JavaScript模板)编译。
在名为app/assets
的{{1}}文件夹中创建一个目录。该目录将由资产管道自动获取。
接下来,将该目录中的文件命名为templates
,以及您要创建的模板类型jst
(嵌入式javascript)。您甚至可以将它们嵌套在目录中。例如:
ejs
资产管道还允许您通过简单地更改文件扩展名(包括任何必要的宝石)来使用其他模板语言,如嵌入式coffeescript,胡子,把手等。
现在要在Backbone视图中引用您的JST模板,只需使用文件名的路径:
app/assets/templates/my_template.jst.ejs
app/assets/templates/bookmarks/show.jst.ejs
您可能需要将此行添加到var Bookmark = Backbone.View.extend({
template: JST['bookmarks/show'],
render: function() {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
:
application.js
这是一篇很好的文章,它更详细地解释了所有这些:http://www.bigjason.com/blog/precompiled-javascript-templates-rails-3-1
答案 2 :(得分:-3)
你应该把你的Backbone模板放在哪里?我无处可说。我相信在大多数Rails应用程序中,服务器应该负责所有HTML的呈现,而客户端JavaScript应该负责将呈现的HTML插入到DOM中。除此之外,这使得I18n更容易。
例外情况是,如果Rails只是用作主要在客户端运行的应用程序的轻量级后端(尽管在这种情况下,您可能想要使用Sinatra或其他东西)。在这种情况下,Rails应该可以渲染 nothing ,让JS做 all 渲染。
请注意这里的基本原则。服务器应该负责所有渲染,或者客户端应该负责。分裂会让生活变得更加艰难。