Rails radio_buttons同一个属性可以多选吗?

Rails radio_buttons multiple selection for same attribute, is it possible?

我有一个 search_form_for,我需要能够 select 多次付款 statuses 来进行 Ransack 搜索。

我们已经有这个属性的 f.select 下拉框,但我们现在需要能够同时 select 多个 status

形式:

<%= search_form_for @search, url: admin_payments_path, html: {class: "form-inline"} do |f| %>
  <div class="form-group">
    <%= f.select :status_eq, payment_status_selector, { include_blank: "Payment status.."}, class: "form-control gray" %>
  </div>  
<% end %>
  

我试过:

<%= f.select :status_eq, payment_status_selector, {include_blank: false}, {multiple: true, as: :radio_buttons}  %>

给了我一个 select 框,其中包含允许我 select 多个选项的所有选项,但它们不是 radio_buttons 并且传递了一个空值 "" selected 选项。

    <% payment_status_selector.each do |status| %>
      <%= radio_button_tag :status_eq, "#{status[1]}", false,  class: 'radio-checkbox' %>
      <%= label_tag( "#{status[0]}") %>
    <% end %>

这给了我一个 radio_button 每个可能的 status,但我不能 select 超过一个。

我想不出正确的方法。也许 check_boxes 是能够达到 select/unselect 状态的更好选择?

是的,使用 check_box 将是更好的选择。

试试,

<% payment_status_selector.each do |status| %>
  <%= f.check_box :payment_statuses, { multiple: true }, status, false %>
  <%= label status %>
<% end %>

您可以从参数中得到控制器中的值:

{ search: { payment_statuses: ["status 1", "status 2"] }

确保 payment_status_selector returns 值数组。

希望对您有所帮助。

参考:https://medium.com/programming-problem-solving-logbook/rails-multiple-checkboxes-e9c4c7fda356