如何使用单选按钮

时间:2016-01-20 10:41:11

标签: ruby-on-rails ruby input radio-button field

我有单选按钮,我想用它来保存出勤信息: 是的,不,也许

HAML中的代码:

= f.input :attendee, :as => :radio, :collection => { "Yes" => true, "No" => false, "Maybe" => nil }, :label => "Attendence:"

数据库中的字段与会者是布尔类型。 当我将我的值从Yes / No更改为Maybe rails并没有在数据库中保存'nil'。我该怎么做才能保存'nil'

2 个答案:

答案 0 :(得分:2)

如果布尔值设置为默认值为true或false,则它不接受空值,否则您可以将空值传递给布尔字段,如下所示。

= f.input :attendee, :as => :radio, :collection => { "Yes" => true, "No" => false, "Maybe" => "" }, :label => "Attendence:"

答案 1 :(得分:1)

Boolean is true/false,您无法nilnil被视为错误):

  

在计算机科学中,布尔数据类型是一种数据类型,具有两个值(通常表示为true和false)。 [[如果不是真,假]]

使用enum

,你会更好
#app/models/model.rb
class Model < ActiveRecord::Base
   enum attendee: [:yes, :no, :maybe]
end

这比使用boolean略微臃肿,但保留data integrity(您必须破解Rails布尔值才能将nil识别为maybe }})。 Enumintegers,每个enum由数字代表......

  

yes = 0

     

no = 1

     

maybe = 2

这样,您就可以执行以下操作:

= f.input :attendee, as: :radio, collection: Model.attendees, :label => "Attendence:"