私は 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 コードをアセットでコンパイルすることは可能ですか? どのように?