Ruby on Rails - How to use a select box to change an attribute of the selected items? -
i'll start off bit of context question. have group of offices each have reviewers associated them. reviewer can associated 1 office. want create 2 select boxes. 1 lists of reviewers associated office viewing, other lists of reviewers available (which of reviewers aren't assigned office).
the goal of current reviewer's listbox set office nil when selected. goal of available reviewers listbox set office office's id when selected. i'm not sure how change reviewers' office_id when using select box.
code-wise, have far this:
office_controller.rb
def edit @office = group.find params[:id] if params[:id] @current_reviewers = reviewer.find_all_by_group_id(@office.id) @available_reviewers = reviewer.where('group_id <> ?',[@office.id]) end def update ? end office/edit.html.erb
<% form_for(@office, :url => {:controller => :office, :action => :update, :id => @office.id}, :html => {}) |f| %> ... <%= select_tag 'removedreviewers', options_from_collection_for_select(@current_reviewers, "id", "display_name"), :multiple => true %> <%= select_tag 'chosenreviewers', options_from_collection_for_select(@available_reviewers, "id", "display_name"), :multiple => true %> ... <% end %> any suggestions appreciated. thanks!
i solved adding ability select_tag selected objects collection via [] modifier of select_tag name. so, in example was:
<%= select_tag 'removedreviewers[]', options_from_collection_for_select(@current_reviewers, "id", "display_name"), :multiple => true %> and controller code handle it, did this:
@removedreviewers = params[:removedreviewers] if !@removedreviewers.nil? @removedreviewers.each |reviewer| @reviewer = reviewer.find(reviewer) @reviewer.group_id = nil @reviewer.save end end and equivalent chosen/available reviewers.
Comments
Post a Comment