我应该在Rails框架中放置我的Backbone模板?

时间:2011-11-15 14:16:12

标签: ruby-on-rails backbone.js

我是一名试图学习Backbone的rails开发人员然后我遇到了这个问题:由于Underscore模板包含<%=%>之类的符号,我猜模板不能包含在{{1}中文件,所以是否可以为每个模板分配一个rails?它应该延伸到什么程度?

3 个答案:

答案 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 渲染。

请注意这里的基本原则。服务器应该负责所有渲染,或者客户端应该负责。分裂会让生活变得更加艰难。