【发布时间】:2020-10-09 23:23:24
【问题描述】:
我在 Rails 5.1.4 上运行,并且在为布尔字段使用选择标记时遇到问题。这是我的表格:
= f.select :insurance_authorization_required, options_for_select([["Yes", true], ["No", false]]), { :prompt => 'Select One'} , { :class => 'dropdown' }
我还验证了该字段的存在:
validates :insurance_authorization_required, presence: true
选择 Yes 会将该字段正确保存为 true,但是如果我选择 No,则会收到错误消息 insurance_authorization_required can't be blank。我尝试改用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 作为我的选择选项的值,但为什么它对我不起作用?我错过了什么吗?
【问题讨论】:
标签: ruby-on-rails