Spent over 24 hours trying to figure this - multiple params


#1

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):

<%=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!!!


#2

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):

<%=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})
-%>


#3

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 and then your
controller look up that roster entry and now you have access to
everything
you want.

-philip


#4

Philip H. 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 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:

<%=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.


#5

Philip H. 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.


#6

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