在Rails中为关系数据创建表单

问题描述:

我有一个窗体需要显示与其他几个表有关系的表。例如,我有一个表格“案件”(想象,调查案例),这是一个索赔人和一个客户。在Rails中为关系数据创建表单

我希望窗体显示填写案例数据,客户数据和索赔人数据的字段。有没有一种简单的方法来做到这一点,这样,当它的提交,这将是简单:

case = Case.new(params[:case]) 
case.save 

因为这将是,如果我只是提交并保存形式仅仅是个案的数据?

听起来像你正在寻找积极记录的accepts_nested_attributes_for方法。您将需要使用

- form.fields_for :claimant do |claimant_form| 
    = claimant_form.text_field :name 

手艺表单可以在Ryan Daigle's blog post

+0

正是我在找的东西!谢谢! – intargc 2009-08-05 20:32:25

我不相信有一种方法,你可以调用case.save,它会工作。

要制作表格,请使用fields_for。 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001605

fields_for允许您添加存储在不同的POST变量领域,因此,如果您设置字段正确,则在新的方法中,你可能会做这样的事情:

claimant = Claimant.new(params[:claimant]) 
claimant.save 

其中ISN”非常复杂。

+0

嗯,我知道,你可以填写一个完整的关系对象,像这样: 情况= Case.new case.claimant = Claimant.new #填写情况和申请人信息 case.save 它将案件和索赔人的东西保存在数据库中......我只是不确定你是否可以用表单中的参数来做到这一点。我猜不会。 谢谢! – intargc 2009-08-05 19:24:22

找到更多信息,请参阅我complex-form-examples创建巢状多模型形式。这已更新为与Rails 2.3的accepts_nested_attributes_for一起使用。

它允许您根据需要在params[:case]之间嵌套关联。当您拨打case.save时,其他一切都将被保存。