繁体   English   中英

Rails 如何将 select 列表用于 boolean 字段?

[英]Rails how to use a select list for a boolean field?

我在 Rails 5.1.4 上运行,并且在为 boolean 字段使用 select 标签时遇到问题。 这是我的表格:

= 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,但是如果我 select No ,我会收到一条错误消息,指出insurance_authorization_required can't be blank 我尝试改用01

= f.select :insurance_authorization_required, options_for_select([["Yes", 1], ["No", 0]]), { :prompt => 'Select One'} , { :class => 'dropdown' }

但这会产生相同的结果:选择“是”保存为true ,选择“否”会引发错误。

我也尝试在我的 model 中投射这个领域:

def insurance_authorization_required=(val)
  if val.is_a?(TrueClass) || val.is_a?(FalseClass)
    super(val)
  else
    super(val == 'true' || val == '1')
  end
end

这也没有解决。 选择“否”时仍然出现空白错误。

我看到其他多个类似的问题,接受的答案是使用truefalse作为我的 select 选项的值可以工作,但为什么它对我不起作用? 我错过了什么吗?

在 Rails 中, false被认为是blank 您可以在 Rails 控制台上尝试:

在此处输入图像描述

您应该删除存在验证,并将该字段设置为默认为 false。 或者,因为它是 boolean,所以将true视为 true,将 false 或 nil 视为 false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM