ruby-on-rails - 如何逃脱|对于 ERB 中的 RAILS fields_for?

标签 ruby-on-rails rendering erb simple-form fields-for

在我们的 rails 3.2 应用程序中,我们的 View 代码(以 simple_form 形式)存储在 @erb_code 中,并以内联方式将其渲染为:

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

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

<% end %>

@erb_code 是存储 View 代码的字符串。 @erb_code 中有一个 fields_for block 会导致错误。这是 fields_for block :

  .........
    <%= 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() 中的任何其他内容?

最佳答案

请尝试以下操作:

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

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

<% end %>

即,不使用 ERB.new。根据需要添加更多本地人。

过去,我在 Rails 3.2.13 中使用内联渲染来实现类似目的。

关于ruby-on-rails - 如何逃脱|对于 ERB 中的 RAILS fields_for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618252/

相关文章:

ruby-on-rails - 摆脱 Guard bundler 警告

ruby-on-rails - 尝试运行 gem install 时出错

c++ - Directx 11 渲染问题,没有显示三角形

ruby-on-rails - 在 erb 模板中进行救援的好做法?

ruby-on-rails - Rails 新手 : How to add routes to a rails 3 engine?

ruby-on-rails - 在 Heroku 部署后触发 Travis 运行

javascript - 如何在 DOM 注入(inject)之后和大规模 DOM 操作之前强制浏览器重新绘制(setTimeout 没有帮助)

jquery - 使用 jspdf 导出 PDF 不呈现 CSS

ruby-on-rails - 登录页面的 UrlGenerationError Rails 4.1

javascript - 语法错误,意外的 kENSURE js.erbrails