2009-08-05 7 views
16

Il s'agit essentiellement d'une question de forme imbriquée, mais avec un seul champ appartenant à un modèle parent. Mon formulaire de saisie de données recueille des données pour un modèle - mais j'ai aussi besoin de collecter un autre élément de données/valeur (UserID) qui va réellement dans un enregistrement parent qui sera créé avec l'enregistrement de détail. AFAIK Rails s'attend à ce que chaque champ de formulaire soit mappé à un modèle et j'ai besoin de créer un champ de saisie de données indépendant que je vais utiliser séparément.Rails - Saisie utilisateur pour plusieurs modèles sur un seul formulaire - Comment

Comment puis-je remplacer ce comportement par défaut et créer un 'formulaire libre/champ non lié'?

TIA, BC

Répondre

43

Heres quelque chose de ma propre application:

Accéder par:

params[:company] and params[:user] 

Controller:

@company = Company.new 
@user = User.new 

Vue:

<% form_for @company, :url => companies_path do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :website %><br /> 
    <%= f.text_field :website %> 
    </p> 
<hr /> 
    <% fields_for @user do |u| %> 
    <p> 
     <%= u.label :email %><br /> 
    <%= u.text_field :email %> 
    </p> 
    <p> 
     <%= u.label :username %><br /> 
    <%= u.text_field :username %> 
    </p> 
    <p> 
     <%= u.label :password %><br /> 
    <%= u.password_field :password %> 
    </p> 
    <p> 
    <%= u.label :password_confirmation %><br /> 
    <%= u.password_field :password_confirmation %> 
    </p> 
    <% end %> 
    <p> 
     <%= f.submit "Submit" %> 
    </p> 
<% end %> 
Questions connexes