Мое текущее решение включает передачу обоих значений с двумя разными именами переменных из представления в контроллер, а затем использование логики в контроллере, чтобы решить, какое из них использовать для обновления.Это работает, но я думаю, что должен быть лучший способ.Любой совет?
=== view ===
<p>Choose tutor from list: <%= f.collection_select(:current_tutor, @tutors,
:name, :name, {:include_blank => true}) %></p>
<p>..or dd new tutor: <%= f.text_field :current_tutor_textfield %></p>
=== контроллер ===
respond_to do |format|
@student = Student.where(:slug => params[:id]).first
# Here I'm deciding which value will be passed to the update as the new_tutor
unless params[:student][:current_tutor].blank?
new_tutor = params[:student][:current_tutor]
end
unless params[:student][:current_tutor_textfield].blank?
new_tutor = params[:student][:current_tutor_textfield]
end
if @student.update_tutor(new_tutor)
format.html { redirect_to(students_path,
:notice => 'Student was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @post.errors,
:status => :unprocessable_entity }
end
end