ОБНОВЛЕНИЕ: код контроллера в нижней части этого вопроса решает проблему.
Я изо всех сил пытаюсь обновить логическое поле Verified_flag в rails 3. Справочная информация: пользователи могут размещать события и могут посещать события через модель посещаемости (HATM).
У меня есть помощник form_for, который использует радиокнопки, чтобы позволить гостю быть принятым или отклоненным от события:
<%= form_for(@attendance) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<strong>Event description: </strong><%= @attendance.event.description %><br/>
<%= f.radio_button :confirmed_flag, 1 %>Accept
<%= f.radio_button :confirmed_flag, 0 %>Decline
Отображается нормально и подключается к следующему действию обновления контроллера:
def update
@attendance = Attendance.find(params[:id])
respond_to do |format|
if @attendance.update_attributes(params[:attendance][:confirmed_flag])
format.html { redirect_to(@attendance,
:notice => 'Attendance was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @attendance.errors,
:status => :unprocessable_entity }
end
end
end
Как вы можете видеть, я хочу, чтобы результаты из form_for обновляли подтвержденный_флаг, но когда я смотрю на значения в консоли rails для определенной посещаемости, я обновил до 'Принять' в форме, значение подтвержденного_флага остается ноль.
Любая помощь с благодарностью.
Редактировать: соответствующий фрагмент журнала сервера прилагается:
Started POST "/attendances/10" for 127.0.0.1 at 2011-03-21 23:42:18 +0000
Processing by AttendancesController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Oz5qO/bcEJGmzIEH0xDOvtv7ecbF4wXXHpUtlIkDnfc=", "attendance"=>{"confirmed_flag"=>"1"}, "commit"=>"Update", "id"=>"10"}
[1m[36mAttendance Load (15.6ms)[0m [1mSELECT "attendances".* FROM "attendances" WHERE "attendances"."id" = 10 LIMIT 1[0m
Redirected to http://127.0.0.1:3000/attendances/10
Completed 302 Found in 109ms
Обновление: следующий код в контроллере работает отлично. Спасибо всем за помощь, как всегда.
def update
@attendance = Attendance.find(params[:id])
respond_to do |format|
if
@attendance.update_attributes({:confirmed_flag => params[:attendance][:confirmed_flag]})
format.html { redirect_to(@attendance,
:notice => 'Attendance was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @attendance.errors,
:status => :unprocessable_entity }
end
end
end