1

我有简单形式的复选框:

= f.input :status, as: :boolean

但我不希望值为 0 或 1。我希望它们是字符串,例如“not_done”和“completed”。我怎样才能做到这一点?我在 github 线程上遇到了某种解决方案,但我真的不知道它在做什么,另外,它总是给我“新”作为值,无论是否检查该字段...

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

2 回答 2

3

你可以做

<%= 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'
                     } %>
于 2019-04-27T02:54:34.737 回答
0

如果你想使用 check_box 那么它可能:

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

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

于 2013-08-20T09:14:42.180 回答