Forum: Ruby on Rails How can I specify the selected value in collection_select wh

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.
57ca262d3f80efadc5163d5e1875c1ee?d=identicon&s=25 Todd Nine (Guest)
on 2007-05-09 05:39
(Received via mailing list)
Hi all,
  I have a relatively simple scenario.  I have a form that can have a
list of multiple phone objects in it.  I'm trying to get the edit and
entry screens to work with unique field names.  I have entry and
record creation working, but I'm still working on edit.  Is it
possible for me to specify the value of the selected index to the
"collection_select" method via an option or html option?  I read the
doc, but I can't find what I'm looking for.  Below is my code, as you
can see my field and select names are "phone_#" where # is the
iteration index, but the actual variable is "phone".

Main form snippet

[code]
<h2>Phones</h2>
<table>
<%
n = 0
for phone in @phones do
fieldname = "phone_#{n}";
%>
<tr><td>Number:</td><td> <%= text_field_tag fieldname, phone.number%></
td> <td><%= get_phone_types fieldname%></td></tr>
<%
n += 1
end
%>
<table>
[/code]

helper with get_phone_types

[code]
 #
  #Create a Phone type select List
  #Take a list of html options
  #
  def get_phone_types(fieldname)
    @phones = PhoneType.find(:all, :order => "description ASC");
    #TODO, how to assign the value from phone.phone_type.id?
    collection_select(fieldname, "phone_type_id",
@phones, :id, :description);
  end
[/code]

Also, is it possible for me to call the PhoneType.find and save the
resulting array "@phones" for the life of the request across multiple
method calls?  I'm assuming I just need to make @phones an instance
variable, but I'm new to ROR, and I'm unsure of the best practices for
caching domain data for selects.

Thanks,
Todd
This topic is locked and can not be replied to.