2011-11-18 62 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