我很驚訝,沒有人問這個問題呢。我試圖在窗體中驗證單選按鈕,值和自定義按鈕,用戶可以在其中鍵入自定義金額。Rails - 如何驗證單選按鈕和文本字段值?
這裏是我的形式
<%= f.radio_button(:price, 100)
<%= f.label(:price, "$100"</br>
<%= f.radio_button(:price, 200)
<%= f.label(:price, "$200"</br>
<%= f.radio_button(:price, 300)
<%= f.label(:price, "$300"</br>
<%= f.radio_button(:price, :price)
<%= f.label(:price, "Custom:"</br>
<%= f.text_field(:price) %>
形式將這個樣子
Ø$ 100
Ø$ 200
Ø$ 300
O自定義_________________
不管怎麼說,我在我的模型
validates :price, inclusion: { in: [*100..1000] }
寫這個驗證方法的:price
的數據類型是小數。
當我輸入text_field的值時,窗體驗證,但當我單擊一個單選按鈕時沒有。我錯過了什麼嗎? validates_inclusion
應驗證值是否在一個範圍內。所有3個單選按鈕值(100,200,300)都在100..1000範圍內。我不明白爲什麼這不起作用。
當我從單選按鈕提交值時,參數未被保存。當我從文本字段中提交值時,它會被保存。
這裏有一個類似的問題
Rails 4 radio button form helper, true not validating
他們說要用inclusion
,但我已經嘗試過了,也沒有工作。
其他的東西是錯的,我把它設置完全一樣沒有問題。在你的控制器的創建動作中,你可以嘗試'@ object.valid?'然後給我'@ object.errors'的輸出' – Anthony 2014-12-05 16:25:12
'[* 100..1000]'是一個包含901個元素的數組。一個簡單的範圍[應該足夠了](https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/clusivity.rb)。不要浪費內存,你可能需要它:) – 2014-12-05 16:32:52
嗨安東尼,我試着在控制檯中運行這個。我設置了'g = Object.new'來創建我的對象的一個新實例。然後我輸入'g.valid?'並得到了錯誤信息。 'g.errors.full_messages'返回「金額不包含在列表中」。現在,我將嘗試跳過該驗證,保存一個對象,並使用rails控制檯獲取信息。 – Darkmouse 2014-12-05 16:38:23