Dissecting params to read data

i have a simple form with a drop down menu that is created via another
model. when the user hits submit i have all the data passed thru but
can not extract it properly

form_for :user do |form|
form fields here…
find from another table with another model that creates a drop down
with form name “form2”
end

data shows

{“user”=>{“user_zid”=>“8780743182”,
“minitial”=>"",
“lname”=>“doe”,
“fname”=>“joe”,
“password”=>“xxxxx”,
“email”=>“[email protected]”},
“form2”=>{“important_data”=>“043”},
“commit”=>“Register!”,
“authenticity_token”=>“d494c16b36637012c4d9d333a6045f3d4a0394cc”}

i tried:

@user = params[:user]
and then
need_data = @user.form2[:important_data]

help!

On Mar 24, 2008, at 7:46 PM, rashantha wrote:

@user = params[:user]
and then
need_data = @user.form2[:important_data]

@user[‘form2’][:important_data]

Does this work?

On Mar 24, 7:55 pm, “s.ross” [email protected] wrote:

On Mar 24, 2008, at 7:46 PM, rashantha wrote:

@user[‘form2’][:important_data]

Does this work?

no. You have a nil object when you didn’t expect it!

i have tried @user.form2[:important_data]
undefined form2 …

On Mar 24, 2008, at 8:22 PM, rashantha wrote:

i have tried @user.form2[:important_data]
undefined form2 …

From your dump of params, you should be able to get your info using:

params[‘user’][‘form2’][‘important_data’]

Nested params take some care because symbols can only be used to
select the first level of the hash (IIRC). String keys always work,
but the kewl kidz don’t use them :wink:

Hi –

On Mon, 24 Mar 2008, David A. Black wrote:

As S. Ross said, you would need @user[:form2][:important_data]. But

I mean [:user], not @user, of course – but really I mean the other
suggestion I made :slight_smile:

David


Upcoming Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
CORE RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for more info!

<% form_for :user do |form| %>
<%= form.text_field … %>
<% fields_for :user2 do |form2| %>
<%= form2.text_field … %>
<% end %>
<% end %>

and then you’ll have params[:user] and params[:user2] separately.

i tried all the solution but i am getting - You have a nil object when
you didn’t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

i did read about fields_for and also saw it implemented on
railscast.com but i not sure how to implement with a drop down menu.
thanks for all the suggestions

On Mar 24, 8:26 pm, “s.ross” [email protected] wrote:

From your dump of params, you should be able to get your info using:

params[‘user’][‘form2’][‘important_data’]

wish it did but just wouldn’t

just to make sure i did

@finally = params[‘user’][‘form2’][‘important_data’]

but get nil, request parameters show as per my first post.

Hi –

On Mon, 24 Mar 2008, rashantha wrote:

“authenticity_token”=>“d494c16b36637012c4d9d333a6045f3d4a0394cc”}

i tried:

@user = params[:user]
and then
need_data = @user.form2[:important_data]

As S. Ross said, you would need @user[:form2][:important_data]. But
also remember that you can do:

<% form_for :user do |form| %>
<%= form.text_field … %>
<% fields_for :user2 do |form2| %>
<%= form2.text_field … %>
<% end %>
<% end %>

and then you’ll have params[:user] and params[:user2] separately.

David


Upcoming Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
CORE RAILS June 24-27 London (Skills Matter)
See http://www.rubypal.com for more info!

On Mar 24, 10:59 pm, “s.ross” [email protected] wrote:

My mistake. I read the form2 as part of the user form, but now see
that it is a completely different one. Or at least that’s what I
deduce from the naming. In any case, the immediate solution to your
problem is to use:

params[‘form2’][‘important_data’]

YEEEEEESSSSSSSSS!
it worked thanks so much for the help ross and david. this was my
first post on the group. thanks again.

On Mar 24, 2008, at 10:04 PM, rashantha wrote:

@finally = params[‘user’][‘form2’][‘important_data’]

but get nil, request parameters show as per my first post.

My mistake. I read the form2 as part of the user form, but now see
that it is a completely different one. Or at least that’s what I
deduce from the naming. In any case, the immediate solution to your
problem is to use:

params[‘form2’][‘important_data’]