2016-11-14 63 views
0

我目前有一個頁面在我的鐵路網站,默認情況下,將顯示每頁使用will_paginate 25結果。但是,我想要一個下拉菜單,允許用戶選擇從預定值列表中顯示的結果數量。我看了一個類似的問題here的答案,但我對頂級解決方案的問題是,我也在同一頁面中有一個搜索字段,並更改每頁結果的數量,因此刪除了搜索參數(如果有的話)。Rails:下拉菜單選擇每頁的結果將與分頁

我想知道是否有任何方法可以解決此問題?提前致謝!

+0

你是什麼意思搜索參數被刪除?你不能根據選擇哪個選擇值來改變搜索參數嗎? – luke

+0

因此,在我的頁面中,我有一個搜索字段,您可以在其中搜索分頁結果,因此url變得類似於www.-----./----/?search=---,但是使用給定的答案如果您爲每個頁面的結果選擇不同的值,那麼該網址將變爲www.------./----/?per_page=---,因此該表格將不再由搜索參數過濾。 – Twis7ed

+0

所以我想知道是否有辦法讓我同時修改兩個參數。 – Twis7ed

回答

0

該選擇框被證明是麻煩的,但我發現了一種不同的方式來做同樣的功能。

因此,通過使用錨標籤並在構建路徑時抓取搜索參數,它將保留搜索條件以及任何新的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)

0

試試這個:

在你看來 -

<%= 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 
相關問題