Вы делаете два неправильных предположения в своем вопросе. Во-первых, form_tag
не требуется или даже рекомендуется для многомодельных форм; Во-вторых, form_tag
не делает ничего принципиально отличного от form_for
, вы, скорее всего, не правильно форматируете имена полей для своего контроллера.
Чтобы создать форму с вложенными моделями, вам необходимо использовать вспомогательный помощник fields_for
вместе с form_for
. Связь должна быть определена сначала в модели с accepts_nested_attributes_for
. Так как вы не дали нам никакой информации о своих моделях, я дам вам выдуманный пример:
class Person < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :person
end
Это говорит ActiveRecord, что модель Человек может принять атрибуты для адреса, и будет проходить вдоль атрибутов в правильная модель для создания.
<% form_for :person do |p| %>
<% p.fields_for :address do |a| %>
use the a form builder to create
fields for the address model here
<% end %>
<% end %>
заковав fields_for
помощника из p
формы строителя позволяет помощникам генерировать атрибуты в правильном формате.
Дополнительная информация: Nested Model Forms
Благодарим вас за этот подробный ответ. Я многому научился, и все исправил. – Alex 2010-11-28 10:38:51