2

このrails 3.2アプリでは、ビュー コード (simple_form 内) が次のように格納され@erb_code、インラインでレンダリングされます。

<%= simple_form_for @project do |f| %>

    <%= render inline: ERB.new(@erb_code).result(binding) %>

<% end %>

@erb_codeビューコードを格納する文字列です。fields_for@erb_code にエラーを引き起こすブロックがあります。fields_for ブロックは次のとおりです。

  .........
    <%= f.simple_fields_for :contract do |builder| %>
      <%= render('contract', :f => builder)%>
    <% end %>
  ........

エラーは次のとおりです。

(erb):17: syntax error, unexpected ')'
...ds_for :contract do |builder| ).to_s); _erbout.concat "     ...
...                               ^
(erb):21: syntax error, unexpected end-of-input, expecting ')'
...ut.force_encoding(__ENCODING__)
...            

).to_s|ビルダー|の後に追加されました レンダリング時にエラーが発生します。逃走問題ですか?もしそうなら、どのようにエスケープするか、|builder|および/またはその他の方法はERB.new()?

4

1 に答える 1

3

次のことを試してください。

<%= simple_form_for @project do |f| %>

    <%= render inline: @erb_code, locals: {f: f} %>

<% end %>

つまり、ERB.new を使用しません。必要に応じてローカルを追加します。

以前、Rails 3.2.13 で同様の目的で render inline を使用しました。

于 2013-09-08T16:26:50.637 に答える