2009-08-05 7 views
16

Esto es básicamente una pregunta de formulario anidado, aunque con solo un campo que pertenece a un modelo principal. Mi formulario de entrada de datos recopila datos para un modelo; sin embargo, también necesito recopilar otro elemento/valor de datos (ID de usuario) que vaya realmente a un registro principal que se creará con el registro de detalles.Rieles: entrada de usuario para varios modelos en un solo formulario: cómo

AFAIK Rails espera que cada campo de formulario se asigne a un modelo y necesito crear un campo de entrada de datos independiente que usaré por separado.

¿Cómo puedo anular este comportamiento predeterminado y crear una 'forma libre/campo libre'?

TIA, aC

Respuesta

43

Aquí hay algo de mi propia aplicación:

Acceda a ella por:

params[:company] and params[:user] 

controlador:

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

Vista:

<% 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 %> 
Cuestiones relacionadas