2015-04-17 94 views
0

我們index視圖渲染使用render inline:的Rails 3 - 渲染內聯的form_tag

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

這裏@erb_code返回一個字符串index視圖代碼進行渲染。該代碼工作正常,直到form_tag被添加到@erb_code。錯誤是:

(erb):8: syntax error, unexpected ')' 
[email protected]), 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_tagrender inline:

回答

0

這裏render inline作品:

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

這裏動作視圖的渲染,使用(而不是Ruby的ERB)和可變models又在中傳遞內嵌的locals

1

嘗試括在括號您的form_tag

<%= form_tag(onboard_engine_configs_path(format: "csv", :project_id => @project.id), method: :get) do %> 
+0

與()相同的錯誤。 – user938363