我目前有一個頁面在我的鐵路網站,默認情況下,將顯示每頁使用will_paginate 25結果。但是,我想要一個下拉菜單,允許用戶選擇從預定值列表中顯示的結果數量。我看了一個類似的問題here的答案,但我對頂級解決方案的問題是,我也在同一頁面中有一個搜索字段,並更改每頁結果的數量,因此刪除了搜索參數(如果有的話)。Rails:下拉菜單選擇每頁的結果將與分頁
我想知道是否有任何方法可以解決此問題?提前致謝!
我目前有一個頁面在我的鐵路網站,默認情況下,將顯示每頁使用will_paginate 25結果。但是,我想要一個下拉菜單,允許用戶選擇從預定值列表中顯示的結果數量。我看了一個類似的問題here的答案,但我對頂級解決方案的問題是,我也在同一頁面中有一個搜索字段,並更改每頁結果的數量,因此刪除了搜索參數(如果有的話)。Rails:下拉菜單選擇每頁的結果將與分頁
我想知道是否有任何方法可以解決此問題?提前致謝!
該選擇框被證明是麻煩的,但我發現了一種不同的方式來做同樣的功能。
因此,通過使用錨標籤並在構建路徑時抓取搜索參數,它將保留搜索條件以及任何新的per_page值。 所以5和10頁的鏈接看起來像這樣
<%= Link_to "5", current_path(:per_page =>5,:search => params[:search])%>
<%= Link_to "10", current_path(:per_page =>10,:search => params[:search])%>
,並在href的URL看起來像這樣:whatever.com/current?per_page=10&search=DevOps
與提供任何搜索詞的變化。
請務必將per_page值添加到控制器以及
per_page = params[:per_page] @items = Item.all.paginate(page: params[:page], per_page: per_page)
試試這個:
在你看來 -
<%= form_tag xyz_path, method: :get do %>
<%= text_field_tag :search, params[:search] %>
<%= select_tag :per_page, options_for_select([10, 20, 50, 100], params[:per_page]) %>
<%= button_tag :submit %>
<% end %>
在你的控制器 -
unless params[:per_page].present?
params[:per_page] = 20 #default
end
if params[:search].present?
ModelName.where(query: params[:search]).paginate(:page => params[:page], :per_page => params[:per_page])
else
ModelName.all.paginate(:page => params[:page], :per_page => params[:per_page])
end
你是什麼意思搜索參數被刪除?你不能根據選擇哪個選擇值來改變搜索參數嗎? – luke
因此,在我的頁面中,我有一個搜索字段,您可以在其中搜索分頁結果,因此url變得類似於www.-----./----/?search=---,但是使用給定的答案如果您爲每個頁面的結果選擇不同的值,那麼該網址將變爲www.------./----/?per_page=---,因此該表格將不再由搜索參數過濾。 – Twis7ed
所以我想知道是否有辦法讓我同時修改兩個參數。 – Twis7ed