2

私は Rails 3.2 のアプリケーションを単一ページ アプリケーション アーキテクチャに移行しており、gem backbone-on-rails を通じて Backbone.js を使用しています。

私のアプリケーション ビューには、実際には次の簡単な例のように、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)
                                                         ^

そのため、すべてのルビーブロックで発生しているようです。

この前の質問https://stackoverflow.com/a/9282744/1216027に示されているように、{{ }} を EJS 開閉タグとして使用するように Rails アプリケーションを構成しました。ブロックを必要としない ruby​​ コマンドで実際に機能します。

これらの ERB コードをアセットでコンパイルすることは可能ですか? どのように?

4

1 に答える 1

0

<%= ... -%>js.erb アセット ファイルで構文を使用すると、同じ問題が発生しました。使用して <%= ... %>修正しました。

=ループ呼び出しのスキップも試してください

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