0

我的應用程序中有表單的simple_form,我一直使用水平包裝,因爲我希望標籤和輸入位於同一級別。即:包裝的簡單形式導致錯誤

<%= simple_form_for @task, html: {class: 'form-horizontal'}, wrapper: :horizontal_input_group do |f| %> 

<%= simple_form_for @user, html: {class: 'form-horizontal'}, wrapper: :horizontal_input_group do |f| %> 

現在,我已經遇到此錯誤在這個簡單的形式:

<%= simple_form_for ([@task, Response.new]), html: {class: 'form-horizontal'}, wrapper: :horizontal_input_group do |f| %> 

的錯誤是:

html.erb:37: syntax error, unexpected keyword_do, expecting keyword_end 
er: :horizontal_input_group do |f| @output_buffer.safe_appe... 

的期待關鍵字結束沒有意義的事業我在這個simple_form的末尾有<%end%>。如果我刪除此行:

, wrapper: :horizontal_input_group 

...它會工作....但我需要它,因爲我希望我的標籤和輸入在同一行上。奇怪的是,它適用於我的其他simple_form for。只有在這種形式不工作時,我添加此代碼:

, html: {class: 'form-horizontal'}, wrapper: :horizontal_input_group 

有人可以請幫我/向我解釋爲什麼會發生這種情況。

+0

我認爲括號會混淆解析器,並限制傳遞給方法的參數......試試'<%= simple_form_for(([@ task,Response.new]),html:{class:'form -horizo​​ntal'},wrapper::horizo​​ntal_input_group)do | f | %>'並且讓我知道這是否有效。 – SteveTurczyn 2015-04-05 09:49:21

+0

我明白了。這就像一個魅力。謝謝你的解釋 – 2015-04-05 10:21:52

+0

太好了。如果您不介意,我會將其作爲答案發布,以便您可以接受。乾杯,史蒂夫 – SteveTurczyn 2015-04-05 13:50:38

回答

0

括號混淆瞭解析器並限制了傳遞給該方法的參數。嘗試改爲:

<%= simple_form_for(([@task, Response.new]), html: {class: 'form-horizontal'}, wrapper: :horizontal_input_group) do |f| %> 

這將確保所有參數...數組,並選擇與哈希和:html:wrapper ...傳遞給simple_form_for方法。