#html #ruby-on-rails #forms #search #ransack
Вопрос:
У меня есть search_form_for
, и мне нужно иметь возможность выбрать несколько платежных status
систем, чтобы выполнить поиск по обыску.
У нас уже есть 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 %>
Это дает мне radio_button
оценку для каждого возможного status
, но я не могу выбрать более одного.
Я не могу понять, как правильно это сделать. Может быть, с check_boxes
помощью лучшего варианта можно выбрать/отменить выбор статусов?
Комментарии:
1. В этом случае поисковое поле лучше и удобнее (UX).
2. Что именно вы имеете в виду? Как я могу выбрать несколько статусов в поле поиска? @zswqa
Ответ №1:
Да, использование check_box будет лучшим вариантом.
Попробуй,
<% payment_status_selector.each do |status| %>
<%= f.check_box :payment_statuses, { multiple: true }, status, false %>
<%= label status %>
<% end %>
И вы можете ожидать, что значения в контроллере от параметров будут такими:
{ поиск: { статусы платежей: [«статус 1», «статус 2»] }
убедитесь, что payment_status_selector
это возвращает массив значений.
Надеюсь, это помогло.
Ссылка: https://medium.com/programming-problem-solving-logbook/rails-multiple-checkboxes-e9c4c7fda356