从单独的形式链接param范围

时间:2016-09-03 16:14:26

标签: ruby-on-rails

我可以创建一个高级搜索表单,用户可以在同一表单中过滤by photos_countcountryname

但是,如果我想设置我的应用程序,以便用户可以首先过滤by_photos_count,然后在此之后通过countryname过滤(两个单独的表单,使用get请求将params传递给查询字符串),该怎么办?

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?country='US'

用户然后按photos_count

排序
  

example.com/users?country='US'&photos_count=true

我的问题是我的params目前没有链接。它从example.com/users?country='US'到example.com/users?photos_count=true

1 个答案:

答案 0 :(得分:1)

如果您有相当少量的可能参数,则可以将表单中的现有参数作为隐藏字段传递。

<%= form_tag users_path, method: :get, class: 'country' do %>
    <%= hidden_field_tag :photos_count, params[:photos_count] if params[:photos_count].present? %>
...