我正在将 Rails 3.2 中的应用程序迁移到单页应用程序架构,使用 Backbone.js 通过 gem 主干轨。
我的应用程序视图实际上有一些使用 form_for 的表单,比如这个简单的例子:
<%= form_for :filter do |f| %>
<div>
<%= f.label :document, t('tags.label.entity_document') %>
<%= f.text_field :document %>
</div>
<div>
<%= f.label :name, t('tags.label.name') %>
<%= f.text_field :name %>
</div>
... and so on
<% end %>
我已经看到 Rails 3.1 资产管道具有编译 JST 文件的功能,并且可以将多个编译器级联在一起来编译模板,在我的情况下,我想在资产中编译这个 ERB 表单文件。
因此,我将表单 erb 文件移动到名为app/assets/templates/index.jst.ejs.erb的 assets 文件夹中,我收到以下编译错误消息:
compile error
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:2: syntax error, unexpected ')'
...h', :method => 'get'} do |f| ).to_s)
^
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:52: syntax error, unexpected kENSURE, expecting ')'
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb:54: syntax error, unexpected kEND, expecting ')'
(in /Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/index.jst.ejs.erb)
这个简单的以下代码也会发生同样的错误:
<%= [1,2].each do |element| %>
aaa
<% end %>
做
compile error
/Users/rmi/Workspace/cbs-backbone/app/assets/templates/entities/sbrabous.jst.ejs.erb:1: syntax error, unexpected ')'
_erbout = ''; _erbout.concat(( [1,2].each do |element| ).to_s)
^
所以它似乎发生在每个红宝石块上。
我已将我的 rails 应用程序配置为使用 {{ }} 作为 EJS 打开/关闭标签,如上一个问题https://stackoverflow.com/a/9282744/1216027所示,因此 <% 应该是 ERB 处理,它是真正适用于不需要块的 ruby 命令。
是否可以在资产中编译这些 ERB 代码?如何?