鉴于搜索框的内容以及在其他2个下拉列表中选择的内容,我正在尝试过滤索引页的结果。
我正在使用simple_form,并且已经有了搜索框,并且可以使用以下参数之一过滤结果:
我的观点:
<%= form_tag(entitys_path, method: :get) do %>
<%= text_field_tag :name_filter, params[:name_filter] %>
<%= submit_tag 'Search' , name: nil %>
<% end %>
我的索引方法:
def index
@entitys = if params[:name_filter]
Entity.joins(:user).where('LOWER(users.name) LIKE?', "%#
{params[:name_filter]}%".downcase).paginate(page:
params[:page], per_page: 8)
else
@entitys = Entity.all.paginate(page: params[:page],
per_page: 8)
end
end
我不知道如何再创建2个下拉菜单并将其应用于索引方法过滤。 预先感谢。
答案 0 :(得分:0)
从评论看来,问题似乎在于如何填充选择标签。这是所需的方法
所以它们可能看起来像这样:
<%= select_tag(
'location',
options_from_collection_for_select(
get_all_locations,
'name', # The method called to generate the value passed up to the controller
'name' # The value displayed to users
)
) %>
这将在提交表单时填充params[:location]
。
答案 1 :(得分:0)
查看:
<%= form_tag(entitys_path, method: :get) do %>
<%= text_field_tag :name_filter, params[:name_filter] %>
<%= select_tag :location_filter, options_for_select(get_city_list) %>
<%= select_tag :activity_filter, options_for_select(get_professional_activity_list) %>
<%= submit_tag 'Procurar' , name: nil %>
<% end %>
控制器索引方法:
def index
if params[:name_filter].present? || params[:activity_filter].present? || params[:location_filter].present?
@entitys = Entity.joins(:user).where('LOWER(users.name) LIKE?', "%#{params[:name_filter]}%".downcase).where('LOWER(entities.location) LIKE?', "%#{params[:location_filter]}%".downcase).where('LOWER(entities.professional_activity) LIKE?', "%#{params[:activity_filter]}%".downcase).paginate(page: params[:page], per_page: 8)
else
@entitys = Entity.all.paginate(page: params[:page], per_page: 8)
end
end
enter code here
这可以满足我的需求(或者看起来如此)