Problem with single form and two models

Hello everyone Just started to learn ROR.Does anyone have an idea on how to store fields in two tables using a single form? I wish to store the registration details in 'users' table and the langauges selected by the user in another table user_language with each row for one language selected(fields in the user_language table is user_id and language_id where user_id is the id of the user trying to register ie there may be more than one languages for a single user) My view is like the following <% form_for :user do |f| %>   <tr>     <td>Enter Name</td>     <td>:</td>     <td><%= f.text_field :name %>   </tr>   <tr>     <td>Enter Username</td>     <td>:</td>     <td><%= f.text_field :username %>   </tr>   <tr>     <td>Enter Password</td>     <td>:</td>     <td><%= f.password_field :password %>   </tr>   <tr>     <td>Address</td>     <td>:</td>     <td><%= f.text_field :address %>   </tr>

  <tr>       <td>Select Gender</td>       <td>:</td>       <td><%= radio_button("user", "gender", "1") %>Male         <%= radio_button("user", "gender", "2") %>Female         <%= radio_button("user", "gender", "3") %>Not Applicable     </td>   </tr>       <tr>           <td>Select Languages Known</td>           <td>:</td>         <td>       <% for language in @languages %>

       <%= language.language %> <%= check_box_tag("user_language[language_id]","#{language.id}") %>       <% end %>

      </td>       </tr>   <tr>     <td>Select country </td>     <td> :</td>       <td>             <select id="user[country_id]" name="user[country_id]">       <option value="">Select Country </option>             <%= options_from_collection_for_select(             Country.find(:all), "id", "name") %>             </select>       </td>     </tr>       <tr>         <td> Select State</td>         <td>:</td>         <td>           <div id="state_list">         <%= select("user", "state_id", State.find(:all).collect{ |c| [ c.state, c.id] }, {:prompt => 'Select State'},{:onchange=>'display_msg();'}) %>

        <%= observe_field("user[country_id]",                     :frequency => 0.50,                     :update => "user_state_id",                     :url => {:action => :load_states},                     :with => "'country_id='+value")                 %>                 </div>         </td>       </tr>

  <tr>     <td colspan="3" align="center">     <%= f.submit "Register" ,{:onclick=>"display_msg(document.getElementById('user_name').value)" }%>     <%= f.submit "List Users" %>     </td>   </tr> <% end %>

Controller contains def create     @languages = Language.find(:all)     if request.post? and params[:commit] == "Register"       @user = User.new(params[:user])

    @user.save     @user.user_language = User_Language.new(params[:user_language])     redirect_to :action => 'list_users'   end when trying an error occurs . Pls help!

what error u r getting?

use build method… google it you will get good answer.

Start learn from here :

and then follow up to episode 3.

Y Reinhart AP

Rails Terrorist wrote:

Start learn from here : #73 Complex Forms Part 1 - RailsCasts

and then follow up to episode 3.

Y Reinhart AP

Thank you and solved my issue