记住在 Rails 中使用 will_paginate 的价值
Remember value working with will_paginate in Rails
也许有人可以帮助我解决以下问题:我在 Rails 5.0 中使用 will_paginate,并且我读出了每页 24 个结果。结果取自 Elasticsearch,并按 _score 排序。因此,无论搜索查询是什么,第一个匹配项都将是最佳匹配对象。一切正常。
第一个对象的分数最高,我打算显示一个相对于分数填充的进度条。所以第一场比赛将填充到 100%,第二场比赛将(如果分数较低)填充较少。我当前的代码也能找到所有作品。
问题:
在第 1 页上一切正常。但是一旦我点击第 2 页或任何其他页面,最初的最高 _score 就会丢失。该特定页面的第一个匹配项是从这一点开始的最高分。
如果不在控制器中进行两次 运行 查询(一次针对特定页面,一次检索最高分),我如何才能记住最高分?
也许有人知道解决这个问题的妙招。
控制器
@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
非常感谢您的帮助!
你有几个选择。
最简单的就是把最高分扔进饼干里(不太安全)。
第二个最琐碎的是将最高分扔进签名的 cookie(更安全,只有 99.9% 防弹)
丢到session变量里。
还有更多,但它们可能比您目前的用例所需的要复杂得多。
也许有人可以帮助我解决以下问题:我在 Rails 5.0 中使用 will_paginate,并且我读出了每页 24 个结果。结果取自 Elasticsearch,并按 _score 排序。因此,无论搜索查询是什么,第一个匹配项都将是最佳匹配对象。一切正常。
第一个对象的分数最高,我打算显示一个相对于分数填充的进度条。所以第一场比赛将填充到 100%,第二场比赛将(如果分数较低)填充较少。我当前的代码也能找到所有作品。
问题:
在第 1 页上一切正常。但是一旦我点击第 2 页或任何其他页面,最初的最高 _score 就会丢失。该特定页面的第一个匹配项是从这一点开始的最高分。
如果不在控制器中进行两次 运行 查询(一次针对特定页面,一次检索最高分),我如何才能记住最高分?
也许有人知道解决这个问题的妙招。
控制器
@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
非常感谢您的帮助!
你有几个选择。
最简单的就是把最高分扔进饼干里(不太安全)。
第二个最琐碎的是将最高分扔进签名的 cookie(更安全,只有 99.9% 防弹)
丢到session变量里。
还有更多,但它们可能比您目前的用例所需的要复杂得多。