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 thelabelattribute 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 thevalueattribute 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 thevalueattribute for one of the<option>tags, which will have theselectedattribute 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:
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:
option_groups_from_collection_for_select(@continents, :countries, :name, :id, :name, 3)
Possible output:
<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.