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处理第一个表单。如何让程序在点击"接受"按钮后处理第二份表格?
谢谢!
您可以在嵌套表单中使用field_for
方法
正确的方法是使用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