2011-11-18 41 views
0

我會盡可能多地儘可能簡單地解釋它。Rails表單中的多個條目

我有一個Rails窗體和3個模型。 Models:DemoModule,SalesDemo和SalesDemoModule

我想在我的視圖/窗體中執行的操作是創建一個新的SalesDemo,但SalesDemo有許多SalesDemoModules。

在控制器中,我有:

@sales_demo = SalesDemo.new 
@demo_modules = DemoModule.find(:all, :conditions => ['active = true']) 

我怎樣才能在我看來,有一個文本字段行的每個DemoModule,我可以回傳給控制器動作,保存到SalesDemoModule?

回答

2

您可以指定SalesDemo accepts_nested_attributes_for SalesDemoModule,它允許您創建一個嵌套表單(即在SalesDemo的form_form中,您可以具有用於SalesDemoModule的fields_)。 Here's a simple example

+0

感謝您的信息,但是這似乎只工作,如果我有1 SalesDemoModule?我所擁有的是10個DemoModules,在視圖中,我想用文本字段列出它們。在每個模塊的測試字段中輸入一個字母,如果文本字段中有一個值,我想用sales_demo_id和demo_module_id創建一個新的SalesDemoModule記錄,以便稍後將其鏈接起來? –

+0

查看此示例以獲取更多詳細信息,包括1到多個示例,包括創建記錄:http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-屬性 –

1

簡單地說:

<%= form_for @sales_demo do |sales_demo_form| %> 
    <%= sales_demo_form.text_field "some_sales_demo_property" %> 
    <%= sales_demo_form.fields_for @demo_modules do |modules| %> 
    <%= modules.text_field "some_module_text_field" %> 
    <% end %> 
<% end %> 

在SalesDemo,你需要有

accepts_nested_attributes_for :demo_modules 

你可以得到一些更多的信息here