我很惊讶,没有人问这个问题呢。我试图在窗体中验证单选按钮,值和自定义按钮,用户可以在其中键入自定义金额。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