2013-10-09 39 views
2

我有一個複選框Ruby on Rails的複選框,不保存數據

<%= f.check_box :anonymous %> 

而我的表有一欄anonymous這是真的還是假的。在生成的HTML

代碼:

<input name="comment[anonymous]" type="hidden" value="0" /> 
<input id="comment_anonymous" name="comment[anonymous]" type="checkbox" value="1" /> 

現在,由於某種原因,當我添加如果我的匿名複選框被選中或不..它不是在數據庫中更改數據它不保存數據。所有其它領域得到除匿名保存外。

可能是什麼問題?

+0

你能展示更多的視圖代碼嗎?就像'f.check_box'周圍的'form_for'一樣? – lurker

+0

'<%= form_for(comment,:url =>(defined?(submit_url)?submit_url:[commentable,「comments」]),:method =>:post,:id =>「comment-form」,:class =>「form-horizo​​ntal」)do | f | %>' – user1736479

回答

1

使用#check_box_tag代替:

<%= check_box_tag(:anonymous) %> 

從官方指南:

陣列參數不與check_box幫手發揮出色。按照 的HTML規範取消選中複選框提交沒有任何價值。 但是,對於複選框,始終提交 值通常很方便。 check_box助手通過創建一個隱藏的 輸入具有相同的名稱來僞造。如果取消選中該複選框,則僅提交隱藏的 輸入,如果選中,則提交這兩個輸入,但 複選框提交的值優先。當使用數組參數 和數組參數時,這個重複的提交會混淆Rails ,因爲重複的輸入名稱是它決定何時開始新的 數組元素的方式。最好使用check_box_tag或使用散列值而不是數組。

+0

我得到: ''未定義的方法'check_box_tag'爲#'' – user1736479

+0

@ user1736479我想你做了'f.check_box_tag'。再看看我提出的解決方案:) – Agis

+0

Agis,我試過你的解決方案,它不工作。我仍然只能進入我的數據庫。我正在打開這樣的標籤: '<%= check_box_tag:anonymous,1,false,data:{「label」=>「Želimostati anonimen」}%> – user1736479