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是一个存储视图代码的字符串。@erb_code 中有一个fields_for导致错误的块。这是 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| 之后添加 渲染时会导致错误。是逃避问题吗?如果是,如何逃脱|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 中出于类似目的使用了内联渲染。

于 2013-09-08T16:26:50.637 回答