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

问题描述 投票:1回答:2

我有简单形式的复选框:

= f.input :status, as: :boolean

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

= f.input :status, as: :boolean do
    - f.check_box :status, {}, "new", "confirmed"
ruby-on-rails simple-form
2个回答
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'
                     } %>

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.