更新:此問題底部的控制器代碼可解決此問題。 我正在努力更新rails 3中的boolean confirmed_flag字段。背景:用戶可以託管事件並可以通過出席模型(HATM)參加事件。 我有一個使用單選按鈕,以允許客人被接受或從事件下降了的form_for助手:Rails - 通過控制器更新布爾值
<%= 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的結果能夠更新confirmed_flag,但是當我在rails控制檯中查看特定出勤的值時,我已經更新爲表單中的'Accept',confirm_flag的值仍然爲零。
任何幫助極大的讚賞。
編輯:有關服務器日誌片斷附:
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
你可以發表你的日誌或服務器日誌,看看是否PARAMS實際上獲得通過 – s84 2011-03-21 22:57:07
加入到主要問題機構。謝謝。 – dzn 2011-03-22 00:09:18