我可以创建一个高级搜索表单,其中用户可以在同一表单中过滤by photos_count
和countryname
。
但是如果我想设置我的应用程序,以便用户可以首先通过_photos_count过滤,然后也通过countryname过滤(两个单独的表单,通过get请求将参数传递给查询字符串)?
UsersController
def index
@users = User.all.paginate(page: params[:page])
@users = User.countryname(params[:country]).paginate(page: params[:page]) if params[:country].present?
@users = User.by_photos_count.paginate(page: params[:page]) if params[:photos_count].present?
end
当前,表单不确认是否已经在查询字符串中传递了参数。
编辑:这就是我想要的表单的工作方式:
example.com/users
用户选择国家:
<%= form_tag users_path, method: :get, class: 'country' do %>
example.com/users ?国家= '我们'
用户然后按photos_count
排序example.com/users ?国家= '我们',photos_count = true
我的问题是我的参数目前没有被链接。从example.com/users?country='US'到example.com/users?photos_count=true
如果可能的参数数量相当少,则可以将表单中现有的参数作为隐藏字段传递。
<%= form_tag users_path, method: :get, class: 'country' do %>
<%= hidden_field_tag :photos_count, params[:photos_count] if params[:photos_count].present? %>
...