2015-04-28 124 views
1

我使用Ransack搜索某些數據,但是,我發現搜索後排序不保留。它會恢復到我的控制器中指定的默認排序。搜索後不保留搜索排序,返回默認排序

這種情況是:我按列排序,比方說收入,然後執行搜索,收入排序被移除,並返回到我在控制器中設置的默認排序。

這裏是我的控制器代碼:

def index 
    @q = Product.ransack(params[:q]) 
    @q.sorts = 'start_date desc' if @q.sorts.empty? 
    @products = @q.result.page(params[:page]).per(30) 
end 

我的代碼if sorts.empty?的理解是,如果我已經整理東西這個默認的排序將不適用。這不是這種情況嗎?

謝謝!

+0

你好,你有沒有找到解決你的問題?我有同樣的問題.. :( – Edgars

+0

嘿@EdgarsRozenfelds我還沒有找到解決方案呢..讓我知道如果你做 – bnussey

回答

0

,我發現了這一點,最好的解決方案是使用隱藏域手動添加:s字段搜索表單:

<%= search_form_for(@q, url: search_url) do |f| %> 
    <%= f.hidden_field :s, value: params[:q].try(:[], :s) %> 
    <%= f.text_field :foo_eq %> 
<% end %> 

通過這樣做的:s場總是被用正確的PARAMS渲染時更新搜索表單。如果不手動設置該值,則不起作用,因爲@q.s@q.sorts的別名,它返回對象而不是排序字符串。