2010-08-12 69 views
0

介紹如何爲嵌套窗體生成多個窗體?

我有一個對象@organization說的has_many:quick_facts

基本上,我想爲每個一個_form:quick_fact但有一個保存按鈕,即保存所有quick_facts的。

我的兩個問題:

第一個問題:

我quick_facts不與他們的信息預先填充。它們只對我有的每個quick_fact顯示爲空白。

第二問題

保存按鈕出現在每一單個窗體上

我傷心難過的嘗試:

​​

回答

1

你真的只需要一個形式在這裏,因爲你想要一次提交所有內容。

這裏是我的建議:

使用部分呈現標籤和快速的事實文本選項(如果你希望它是文本)。你希望這個部分每一個簡單的事實被渲染一次,所以在render方法中使用:collection選項來指定快速事實的集合。每個部分都會得到你自己的任何quickfact的本地副本,並且還會創建一個名爲quickfact_counter的變量。

此外,你將要使用:當地人選項的形式傳遞給部分作爲一個局部變量,所以,你可以做f.label,f.text_area

所以,總而言之,你的新的形式將是這樣的:

<% form_for @organization do |form| %> 
    <%= render :partial => "partial_name", :collection => @organization.quick_facts, :locals => {:form => form} %> 
    <%=form.submit 'save', :class => 'button'%> 
<% end %> 

那麼你的部分就只能

<%= form.label :quick_fact, 'QuickFact' %> 
<%= form.text_field :quick_fact %> 

如果你想獲得更豐富的,你可以使用佈局來呈現的形式,並有它遵從部分,但這應該足以讓你開始。能夠將集合傳遞給partial是我最喜歡的Rails功能之一。