提交Rails过滤器后如何使单选按钮不清晰

How to make radio buttons not clear after submitting Rails filter

我有一个带过滤器的 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 %>

radio_button