Reputation: 5953
The following works for having the current user's primary workgroup selected in a dropdown:
<%= f.association :workgroup, :collection => Workgroup.all, :label_method => :group_name, :label => '1) Work Group', :selected => current_user.employee.priworkgroup_id %>
But, how do you set a :selected
for grouped_collection_select ?
Code attempts:
<%= f.grouped_collection_select :employee_id, Workgroup.order(:id), :employees, :group_name, :id, :employee_full_name, :selected => current_user.employee.id %>
<%= f.grouped_collection_select :employee_id, Workgroup.order(:id), :employees, :group_name, :id, :employee_full_name, :include_blank => true, :selected => [current_user.employee.priworkgroup_id, current_user.employee.id] %>
UPDATE1
Reading about grouped_collection_select, I found selected_key
I tried this, but it didn't work:
<%= f.grouped_collection_select :employee_id, Workgroup.order(:id), :employees, :group_name, :id, :employee_full_name, :include_blank => true, :selected_key => current_user.employee.id %>
current_user.employee.id
is = 5
Inspecting the html, the user I want selected has this:
<option value="5">John Jones</option>
UPDATE - thanks to Fenec.
I used the following:
<% options = option_groups_from_collection_for_select(Workgroup.order(:id),
:employees, :group_name, :id, :employee_full_name, current_user.employee.id) %>
<%= select(:employee_id, :employees, options, include_blank: true) %>
And it displays correctly on the screen. But, the select doesn't update the data in the record.
I changed to this:
<%= f.select(:employee_id, :employees, options, include_blank: true) %>
And got undefined method
merge'`
Upvotes: 0
Views: 441
Reputation: 5953
This worked:
<% options = option_groups_from_collection_for_select(Workgroup.order(:id),
:employees, :group_name, :id, :employee_full_name, current_user.employee.id) %>
<%= f.select(:employee_id, options, include_blank: true) %>
Upvotes: 0