2010-10-31 53 views
6

如果選中「記住我」複選框,我想設置一個cookie在1年內過期。in rails,複選框返回的值是多少?

我有這樣一個複選框表單輸入:

<%= check_box_tag 'remember', '', false, :class => 'checkbox' %> 

會當它被張貼的價值是什麼呢?

它是真/假或檢查或1或?我在助手中將值設置爲''。

回答

-3

你在你的行動得到PARAMS

params['remember'] 

如果如果檢查你有假像值PARAMS。如果不是檢查你沒有params發送給你的行動。

7

在導軌API文檔它具有缺少的參數的這是很有幫助的解釋和隱藏字段變通:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box

check_box(對象,方法,選項= {},checked_value = 「1」 ,unchecked_value =「0」)

返回一個複選框標籤,用於訪問分配給模板的對象(由對象標識)的指定屬性(由方法標識)。該對象必須是實例對象(@object)而不是本地對象。它的目的是該方法返回一個整數,如果該整數大於零,則選中該複選框。輸入標籤上的其他選項可以作爲包含選項的散列來傳遞。 checked_value默認爲1,而默認的unchecked_value設置爲0,這對布爾值很方便。 陷阱

HTML規範說未經檢查的複選框不成功,因此Web瀏覽器不會發送它們。不幸的是,這引入了一個問題:如果一個發票模型有一個付費標誌,並且在編輯付費發票的表單中,用戶取消選中它的複選框,則不發送付費參數。因此,像

@ invoice.update_attributes(PARAMS [:發票])的所有大容量分配成語

不會更新標誌。

爲了防止這種情況,助手會在複選框之前生成一個輔助隱藏字段。隱藏字段具有相同的名稱,其屬性模仿未選中的複選框。

這樣,客戶端或者只發送隱藏字段(表示複選框未選中)或兩個字段。由於HTML規範要求鍵/值對必須按照它們出現在表單中的相同順序發送,並且參數提取會獲取查詢字符串中最後一次出現的任何重複鍵,這對於普通表單來說很有用。

9

複選框將返回01

不要與falsetrue比較,因爲這可能會導致您的問題,因爲0是在Ruby中的true

+0

我不知道爲什麼這個答案被降低,因爲它是答案的問題,但這裏有一些來源: http:// stackoverflow。com/questions/372652 /這是一個應該被警告的新手應該注意的問題 - 關於 http://railsforum.com/viewtopic.php?id=27353 – chech 2012-05-07 16:28:45