Как обновить одно и то же значение из списка выбора или текстового поля в той же форме (Rails 3)? - PullRequest
0 голосов
/ 01 декабря 2010

Мое текущее решение включает передачу обоих значений с двумя разными именами переменных из представления в контроллер, а затем использование логики в контроллере, чтобы решить, какое из них использовать для обновления.Это работает, но я думаю, что должен быть лучший способ.Любой совет?

=== view ===

<p>Choose tutor from list:&nbsp;<%= f.collection_select(:current_tutor, @tutors,
:name, :name, {:include_blank => true}) %></p>
<p>..or dd new tutor:&nbsp;<%= 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

1 Ответ

0 голосов
/ 01 декабря 2010

Я не знаю многих лучших способов сделать это, хотя я бы, наверное, решил, где вы решаете, какой репетитор работает с @student. Эти два утверждения являются взаимоисключающими, нет? Они оба могут исполниться в этот момент, если только вы не намерены, чтобы новое имя преподавателя переопределило выбор существующего преподавателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...