嵌套表单问题

时间:2011-04-14 04:39:23

标签: ruby-on-rails ruby-on-rails-3

我有一些代码:

index.html.haml:

= form_tag 'search/index', :id => "index_form" do
  /* some fields there */
  = render :partial => 'geo_form', :object => @geo
  = submit_tag 'Search'

_geo_form.html.haml:

= form_tag 'search/save_geo', :id => "geo_form" do
  /* some fields there */
  = submit_tag 'Accept'

问题是:当我完成第二个(嵌套)表单并按下“接受”按钮时,rails会处理第一个表单。单击“接受”按钮后,如何让程序处理第二个表单。
谢谢!

2 个答案:

答案 0 :(得分:0)

您可以对嵌套表单使用field_for方法。

答案 1 :(得分:0)

执行此操作的正确方法是使用fields_for。它实际上并不创建新的表单标记,而是排列字段名称,以便您可以调用@ model.update_attributes(params [:model])和两个模型将更新(假设它们具有某种ActiveRecord关系,例如:has_many:belongs_to

代码看起来像这样:

form_for @my_model1 do |f|
    f.text_field :name
    f.fields_for @my_nested_model do |nested|
        nested.text_field :start_date

您可以在此railscast中找到非常详细的信息:http://railscasts.com/episodes/196-nested-model-form-part-1