2017-05-31 44 views
0

也許有人可以幫助我:Rails 5.0中使用will_paginate,我讀出了每頁24個結果。結果取自Elasticsearch並按照_score排序。因此,無論搜索查詢是什麼,第一場比賽都將成爲最佳匹配對象。這一切都很好。在Rails中記住使用will_paginate的值

第一個對象的得分最高,我計劃顯示一個相對於得分填充的進度條。因此,第一場比賽將被填充到100%,第二場比賽將(如果得分較低)填充較少。所有的作品都能找到我目前的代碼。

問題:

在頁1上的所有工作正常。但是,一旦我點擊第2頁或任何其他頁面,最初的最高_分數正在丟失。而這個特定頁面的第一場比賽是此後的最高分數。

我怎樣才能記住最高分,而無需在控制器中運行兩次查詢(一次用於特定頁面,一次用於檢索最高分數)?

也許任何人都知道一個漂亮的伎倆來解決這個問題。

控制器

@users = current_user.search_more_like_this.paginate(:page => params[:page], :per_page => 24) 
# Problem is that the highest score is recalculated once I change the page. 
@highest_score = @users.first._score.to_f 

查看

= link_to user_path(user.slug) do 
    .progressbar 
     %div{:style => "width: #{(user._score/@highest_score)*100}%;"} 
     %span{:id => "os" + user.username.to_s, :class => "slickdot"} 
     %span{:style => "color: white;padding-left:15px;"} 
      = user.username 
      = user._score 

非常感謝你的幫助!

回答

1

您有幾個選項。

  1. 最微不足道的將折騰到cookie的最高分(不太安全)。

  2. 第二最瑣碎的將被折騰的最高得分爲簽署的cookie(更安全,只有99.9%的防彈)

  3. 折騰成一個會話變量。

還有更多,但它們可能遠遠比目前的用例要複雜得多。

+0

它是會話變量。 :D謝謝,現貨! –