我正在使用Rails 5.1.4,并且在使用select标签处理布尔字段时遇到问题。这是我的表单代码:
我还会验证字段是否存在:
= f.select :insurance_authorization_required, options_for_select([["Yes", true], ["No", false]]), { :prompt => 'Select One'} , { :class => 'dropdown' }
我还会验证字段是否存在:
validates :insurance_authorization_required, presence: true
选择 是
可以正确保存为 true,但是如果我选择 否
,会出现错误信息:insurance_authorization_required 不能为空
。我尝试使用 0
和 1
:
= f.select :insurance_authorization_required, options_for_select([["Yes", 1], ["No", 0]]), { :prompt => 'Select One'} , { :class => 'dropdown' }
但这会得到相同的结果:选择“是”保存为true
,而选择“否”则会抛出一个错误。
我还尝试在我的模型中强制转换字段:
def insurance_authorization_required=(val)
if val.is_a?(TrueClass) || val.is_a?(FalseClass)
super(val)
else
super(val == 'true' || val == '1')
end
end
这也没有解决问题。当选择“否”时,我仍然收到空白错误。
我看到了其他多个类似的问题,接受的答案是使用 true
和 false
作为我的选择选项值将起作用,但为什么对我不起作用?我错过了什么吗?
false
,但只是想检查是否存在以确保。我完全忘记了false
被认为是空白,我想我真的需要周末休息。哈哈,我想我真的需要周末休息。 - Ccyan