Rails 3 - 内联渲染 form_tag
Rails 3 - render inline form_tag
我们在index
视图渲染中使用render inline:
:
<%= render inline: ERB.new(@erb_code).result(binding) %>
此处@erb_code
returns一个字符串,用于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
,错误是一样的。如何在 render inline:
中转义 form_tag
?
尝试将您的 form_tag 括在方括号中
<%= form_tag(onboard_engine_configs_path(format: "csv", :project_id => @project.id), method: :get) do %>
此处 render inline
有效:
<%= render inline: @erb_code, locals: {models: models} %>
这里使用动作视图的渲染(而不是 ruby 的 ERB)并且变量 models
在 locals
中再次传入到内联。
我们在index
视图渲染中使用render inline:
:
<%= render inline: ERB.new(@erb_code).result(binding) %>
此处@erb_code
returns一个字符串,用于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
,错误是一样的。如何在 render inline:
中转义 form_tag
?
尝试将您的 form_tag 括在方括号中
<%= form_tag(onboard_engine_configs_path(format: "csv", :project_id => @project.id), method: :get) do %>
此处 render inline
有效:
<%= render inline: @erb_code, locals: {models: models} %>
这里使用动作视图的渲染(而不是 ruby 的 ERB)并且变量 models
在 locals
中再次传入到内联。