Vous faites deux hypothèses incorrectes dans votre question. Tout d'abord, form_tag
n'est pas nécessaire ou même recommandé pour les formulaires à plusieurs modèles; Deuxièmement, form_tag
ne fait rien de fondamentalement différent de form_for
, il est fort probable que vous ne formatez pas les noms de champs correctement pour votre contrôleur.
Afin de créer un formulaire avec des modèles imbriqués, vous devez utiliser l'assistant fields_for
en conjonction avec form_for
. La relation doit d'abord être définie dans le modèle avec accepts_nested_attributes_for
. Puisque vous ne nous avez pas donné d'informations sur vos modèles, je vais vous donner un exemple maquillé:
class Person < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :person
end
Cela indique ActiveRecord que le modèle de personne peut accepter des attributs pour adresse, et transmettre les attributs à la modèle correct à créer.
<% 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 %>
enchaînant l'aide fields_for
du générateur de formulaire permet p
les aides génèrent des attributs dans le format correct.
Plus d'informations: Nested Model Forms
Merci pour cette réponse détaillée. J'ai beaucoup appris et j'ai tout réparé. – Alex