【问题标题】:Rails radio_buttons multiple selection for same attribute, is it possible?Rails radio_buttons 多个选择相同的属性,这可能吗?
【发布时间】:2021-10-04 04:49:54
【问题描述】:

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

我们已经为该属性提供了一个f.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}  %>

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

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

这为每个可能的status 提供了一个radio_button,但我不能选择多个。

我想不出正确的方法。也许check_boxes 是一个更好的选择/取消选择状态的选择?

【问题讨论】:

  • 在这种情况下,搜索框更好更方便(UX)。
  • 你到底是什么意思?如何从搜索框中选择多个状态? @zswqa

标签: html ruby-on-rails forms search ransack


【解决方案1】:

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

试试,

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

您可以从参数中期望控制器中的值如下:

{ 搜索:{ payment_statuses: ["status 1", "status 2"] }

确保 payment_status_selector 返回值数组。

希望有所帮助。

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

【讨论】: