У меня есть приложение Rails с фильтром. Фильтр состоит из двух переключателей. Если выбран переключатель «en», отображаются англоязычные пользователи, то же самое с «es» и испанскими пользователями.
Это прекрасно работает. Я могу фильтровать для английских и испанских пользователей. Однако при отправке формы выбранный переключатель очищается.
Как сделать так, чтобы выбранный переключатель оставался выбранным после отправки формы?
_filter.html.erb:
<%= form_with url: '/filter_users', method: :get do | form|%>
<%= form.radio_button :language, 'en', onclick: "this.parentNode.submit();"%>
<%= form.label :language_en, 'en' %>
<%= form.radio_button :language, 'es', onclick: "this.parentNode.submit();" %>
<%= form.label :language_es, 'es' %>
<% end %>
контроллер:
def filter_users
@users = User.all
@users = @users.filter_by_language(params[:language]) if params[:language].present?
end
модель:
class User < ApplicationRecord
scope :filter_by_language, ->(language) { where language: language }
end
Надеюсь, мой вопрос понятен. Спасибо
Вы можете передать checked: true
в хеше параметров, чтобы сохранить значение.
<%= form_with url: '/filter_users', method: :get do | form|%>
<%= form.radio_button :language, 'en', checked: params[:language] == 'en', onclick: "this.parentNode.submit();"%>
<%= form.label :language_en, 'en' %>
<%= form.radio_button :language, 'es', checked: params[:language] == 'es', onclick: "this.parentNode.submit();" %>
<%= form.label :language_es, 'es' %>
<% end %>
да - см. это - api.rubyonrails.org/classes/ActionView/Helpers/…
спасибо! это то же самое для флажков?