Problem with single form and two models

2 views
Skip to first unread message

Indu Rs

unread,
Sep 29, 2008, 2:02:14 AM9/29/08
to rubyonra...@googlegroups.com
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!
--
Posted via http://www.ruby-forum.com/.

Nilesh Kumar

unread,
Sep 29, 2008, 2:55:21 AM9/29/08
to rubyonra...@googlegroups.com
 what error u r getting?

Abhishek shukla

unread,
Sep 29, 2008, 9:10:50 AM9/29/08
to rubyonra...@googlegroups.com
use build method.. google it you will get good answer.

Rails Terrorist

unread,
Sep 29, 2008, 11:32:20 AM9/29/08
to rubyonra...@googlegroups.com
Start learn from here :
http://railscasts.com/episodes/73-complex-forms-part-1

and then follow up to episode 3.

Y Reinhart AP

Indu Rs

unread,
Oct 1, 2008, 8:03:04 AM10/1/08
to rubyonra...@googlegroups.com
Rails Terrorist wrote:
> Start learn from here :
> http://railscasts.com/episodes/73-complex-forms-part-1
>
> and then follow up to episode 3.
>
> Y Reinhart AP

Thank you and solved my issue

Reply all
Reply to author
Forward
0 new messages