Returns a string of <option>
tags, like
options_from_collection_for_select
, but groups them by
<optgroup>
tags based on the object relationships of the
arguments.
Parameters:
-
collection
- An array of objects representing the<optgroup>
tags. -
group_method
- The name of a method which, when called on a member ofcollection
, returns an array of child objects representing the<option>
tags. -
group_label_method+ - The name of a method which, when called on a member of
collection
, returns a string to be used as thelabel
attribute for its<optgroup>
tag. -
option_key_method
- The name of a method which, when called on a child object of a member ofcollection
, returns a value to be used as thevalue
attribute for its<option>
tag. -
option_value_method
- The name of a method which, when called on a child object of a member ofcollection
, returns a value to be used as the contents of its<option>
tag. -
selected_key
- A value equal to thevalue
attribute for one of the<option>
tags, which will have theselected
attribute set. Corresponds to the return value of one of the calls tooption_key_method
. Ifnil
, no selection is made. Can also be a hash if disabled values are to be specified.
Example object structure for use with this method:
1 2 3 4 5 6 7 8 9 | class Continent < ActiveRecord::Base has_many :countries # attribs: id, name end class Country < ActiveRecord::Base belongs_to :continent # attribs: id, name, continent_id end |
Sample usage:
1 | option_groups_from_collection_for_select( @continents , :countries , :name , :id , :name , 3 ) |
Possible output:
1 2 3 4 5 6 7 8 9 10 11 | <optgroup label= "Africa" > <option value= "1" >Egypt</option> <option value= "4" >Rwanda</option> ... </optgroup> <optgroup label= "Asia" > <option value= "3" selected= "selected" >China</option> <option value= "12" >India</option> <option value= "5" >Japan</option> ... </optgroup> |
Note: Only the <optgroup>
and
<option>
tags are returned, so you still have to wrap
the output in an appropriate <select>
tag.
Please login to continue.