【发布时间】:2023-03-13 03:13:01
【问题描述】:
我很惊讶还没有人问这个问题。我正在尝试在用户可以输入自定义金额的表单中使用值和自定义按钮验证单选按钮。
这是我的表格
<%= 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的输出 -
[*100..1000]是一个包含 901 个元素的数组。一个简单的范围should suffice。不要浪费内存,你以后可能需要它:) -
嗨 Anthony,我尝试在控制台中运行它。我设置
g = Object.new来创建我的对象的一个新实例。然后我输入了g.valid?并得到了错误。g.errors.full_messages返回“金额未包含在列表中”。现在,我将尝试跳过验证、保存对象并使用 rails 控制台获取信息。 -
好的,当我在
rails console中调出我的新对象时,我看到amount的值为零。g.valid?' returns true, butg.amount.nil?` 也返回 true -
参数是字符串的问题,并且您正在针对一系列整数对其进行测试?
标签: ruby-on-rails ruby forms validation radio-button