我们在render inline:
视图渲染中使用index
:
<%= render inline: ERB.new(@erb_code).result(binding) %>
此处@erb_code
返回用于呈现的index
视图代码的字符串。代码工作正常,直到form_tag
添加到@erb_code
。错误是:
(erb):8: syntax error, unexpected ')'
...@project.id), method: :get do ).to_s); _erbout.concat "\r\n\...
... ^
(erb):63: syntax error, unexpected end-of-input, expecting ')'
; _erbout.force_encoding(__ENCODING__)
^
以下是添加的form_tag
代码:
<%= form_tag onboard_engine_configs_path(format: "csv", :project_id => @project.id), method: :get do %>
<%= label_tag(:from_release, "Release") %>
<%= select_tag(:from_release, options_for_select(releases.select('id, name').map{|r| [r.name, r.id]})) %>
<%= submit_tag 'CSV' %>
<% end %>
如果直接渲染@erb_code,则没有错误。
index.erb.html是:
<%= render partial: 'form_list', locals: {models: @onboard_engine_configs} %>
我们知道问题出在render inline:
上。尝试render inline: @erb_code
,错误是一样的。如何逃避form_tag
中的render inline:
?
答案 0 :(得分:1)
尝试将form_tag括在括号中
<%= form_tag(onboard_engine_configs_path(format: "csv", :project_id => @project.id), method: :get) do %>
答案 1 :(得分:0)
此处render inline
有效:
<%= render inline: @erb_code, locals: {models: models} %>
这里使用了动作视图的渲染(而不是ruby的ERB),变量models
再次在locals
内传递给内联。