如何将简单形式复选框的值设置为String?

时间:2013-08-20 08:53:56

标签: ruby-on-rails simple-form

我有一个简单形式的复选框:

= f.input :status, as: :boolean

但我不希望值为0或1.我希望它们是字符串,例如'not_done'和'completed'。我怎么能实现这一目标? 我在github线程上遇到了某种解决方案,但我真的不知道它在做什么,而且,它总是给我“新”作为值,无论是否检查字段都无关紧要......

= f.input :status, as: :boolean do
    - f.check_box :status, {}, "new", "confirmed"

2 个答案:

答案 0 :(得分:1)

你可以

<%= f.input :status, as: :boolean,
                     checked_value: 'completed',
                     unchecked_value: 'not_done'
                     %>

这将在选中时将值设置为completed,而在未选中时将值设置为not_done

但是,如果要继续进行显示,可以执行以下操作:

<%= f.input :status, as: :boolean,
                     checked_value: 'completed',
                     unchecked_value: 'not_done',
                     input_html: {
                       name: 'status_checkbox', # not a must, will help for identification and testing
                       checked: params[:status] == 'completed' ? 'Completed' : 'Not Done'
                     } %>

答案 1 :(得分:0)

如果您想使用check_box,那么可能:

<%= f.input :status, :as => :check_boxes, collection: [['Completed', 'completed']]  %>

但是你不应该期望check_box中有两个值。它只携带一个值。如果未选中复选框,则会考虑相反的情况。