Forum: Ruby on Rails Spent over 24 hours trying to figure this - multiple params

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
21310a1cd3c6888975ef2a8795bbc518?d=identicon&s=25 Tony M. (Guest)
on 2007-04-23 19:32
I feel really stupid spending over 24 hours trying to figure out 1 line
of code but I still can't get it.

I have a table addpackages, that I want to update multiple fields from
table rosters based on the selection of a drop down.


In addpackage.rb:
def create
    @addpackage = Addpackage.new(@params["add"])


In new.rhtml (view):
<select name="add[email]">
<%=options_from_collection_for_select(@rosters, "email", "lname",
selected_value = nil)%>



This code works perfect for obtaining the correct email address based on
drop down and updating the addpackages table.   I could replace "email"
with "fname", "lname", etc etc and it would work fine also.   Whats
killing me is I can only get one parameter to pass and update.   I
cannot for the life of me figure out how to pass email, fname, and lname
based on the selected drop down.


Help!!!!!!!!!!!!!!!!!!!
7c8f8b6eae4dd991e3a9065c68451361?d=identicon&s=25 Wai Tsang (sneptune)
on 2007-04-23 19:36
Tony M. wrote:
> I feel really stupid spending over 24 hours trying to figure out 1 line
> of code but I still can't get it.
>
> I have a table addpackages, that I want to update multiple fields from
> table rosters based on the selection of a drop down.
>
>
> In addpackage.rb:
> def create
>     @addpackage = Addpackage.new(@params["add"])
>
>
> In new.rhtml (view):
> <select name="add[email]">
> <%=options_from_collection_for_select(@rosters, "email", "lname",
> selected_value = nil)%>
>
>
>
> This code works perfect for obtaining the correct email address based on
> drop down and updating the addpackages table.   I could replace "email"
> with "fname", "lname", etc etc and it would work fine also.   Whats
> killing me is I can only get one parameter to pass and update.   I
> cannot for the life of me figure out how to pass email, fname, and lname
> based on the selected drop down.
>
>
> Help!!!!!!!!!!!!!!!!!!!

You would need to use param_name[] if you want to be able to read an
array of parameters instead of just the one value.

For example,

<% choices = options_from_collection_for_select(@rosters, :id, :email,
nil) -%>
<%= select_tag("email_ids[]", choices, {:multiple => true, :size => 10})
-%>
2f9a03aa0fcfe945229cb6126eda2cb2?d=identicon&s=25 Philip Hallstrom (Guest)
on 2007-04-23 19:37
(Received via mailing list)
>
> with "fname", "lname", etc etc and it would work fine also.   Whats
> killing me is I can only get one parameter to pass and update.   I
> cannot for the life of me figure out how to pass email, fname, and lname
> based on the selected drop down.

Don't.  Pass the primary key (ie. 'id') in the <select> and then your
controller look up that roster entry and now you have access to
everything
you want.

-philip
21310a1cd3c6888975ef2a8795bbc518?d=identicon&s=25 Tony M. (Guest)
on 2007-04-23 19:50
Philip Hallstrom wrote:
>>
>> with "fname", "lname", etc etc and it would work fine also.   Whats
>> killing me is I can only get one parameter to pass and update.   I
>> cannot for the life of me figure out how to pass email, fname, and lname
>> based on the selected drop down.
>
> Don't.  Pass the primary key (ie. 'id') in the <select> and then your
> controller look up that roster entry and now you have access to
> everything
> you want.
>
> -philip

Okay I made the folling changes to view:
<select name="add[id]">
<%=options_from_collection_for_select(@rosters, "id", "lname",
selected_value = nil)%>



Now in my controller can you give an example of how to set:
roster.fname = addpackage.fname (I know my syntax is incorrect)


Thanks very much for your help, much appreciated.  This is my first time
with RoR.
2f9a03aa0fcfe945229cb6126eda2cb2?d=identicon&s=25 Philip Hallstrom (Guest)
on 2007-04-23 20:04
(Received via mailing list)
>>
> roster.fname = addpackage.fname (I know my syntax is incorrect)
Dn't you mean the other way?  I think you do... so...

p = Package.new
r = Roster.find_by_id(params[:add][:id])
p.fname = r.fname

....
21310a1cd3c6888975ef2a8795bbc518?d=identicon&s=25 Tony M. (Guest)
on 2007-04-24 04:03
Philip Hallstrom wrote:
>>>
>> roster.fname = addpackage.fname (I know my syntax is incorrect)
> Dn't you mean the other way?  I think you do... so...
>
> p = Package.new
> r = Roster.find_by_id(params[:add][:id])
> p.fname = r.fname
>
> ....

Thank you!  Your help was very much appreciated.  And yes you were
correct I typed it backwards.
This topic is locked and can not be replied to.