我有一个简单形式的复选框:
= f.input :status, as: :boolean
但我不希望值为0或1.我希望它们是字符串,例如'not_done'和'completed'。我怎么能实现这一目标? 我在github线程上遇到了某种解决方案,但我真的不知道它在做什么,而且,它总是给我“新”作为值,无论是否检查字段都无关紧要......
= f.input :status, as: :boolean do
- f.check_box :status, {}, "new", "confirmed"
答案 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中有两个值。它只携带一个值。如果未选中复选框,则会考虑相反的情况。