2

我正在将 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 代码?如何?

4

1 回答 1

0

<%= ... -%>在 js.erb 资产文件中使用语法时,我遇到了同样的问题。使用 <%= ... %>固定它。

也尝试跳过=循环调用

<%  [1,2].each do |element| %>
   aaa
<% end %>
于 2012-06-06T19:56:05.290 回答