我有一个显示电影列表的页面。电影由用户投票,按照投票次数排列。我也使用分页,所以每15部电影分开。我需要在每部电影下放置一个基本的排名字段。
电影名称 排名#1
电影名称 排名#2
电影名称 排名#3
我无法想到最好的方法。我试图使用每个索引,只显示索引,但分页打破了这一点。每次将分页移动到下一组时,计数都会开始。
有没有人对我如何做到这一点有任何想法?
提前致谢。
很抱歉没有首先发布代码。我用索引的想法取消了每个,因为它没有像我预期的那样工作。我开始在电影课上制作一种排名方法,这仍然会产生奇怪的结果。
** movie.rb
def rank
Movie.all.order(vote_count :: desc)
结束
** index.html.erb
<%= @ movie.rank%>
当我打电话给它时会增加一个等级,但如果2部电影的票数相同,则排名仍然无序。
我也为我糟糕的堆栈溢出礼仪道歉。我将审查指南,并在将来做得更好。
答案 0 :(得分:2)
控制器:
-@movies.each_with_index do |movie, i|
=movie.name
%span Ranked Number #{@page-1 * per_page + i}
视图:
LIMIT 40, 10
<强>解释强>
在Controller内部,您使用page参数(或默认值1)对您的集合进行分页。 paginate插件正在为SQL-Query添加一个Limit。假设你有100个结果,你只需要第5页(假设每个页面是10个条目),那么你只需要10个条目,从40号开始。
在SQL中看起来(5-1) * 10
。
如果你有你的设置,你进入视图并渲染它们。使用Page-1 * Per_Page + current_index计算排名。当前索引从0开始,以n-1结束。
让我们假设你选择40,所以页面是5.这意味着 function calculatebmi()
{
validate();
var weight=+document.bmiform1.weight.value;
var feet=+document.bmiform.feet.value;
var inches=+document.bmiform.inches.value;
inches=12*feet+inches;
var height=x*inches;
var finalbmi=weight/(height*height);
document.bmiform3.bmi.value=finalbmi;
}
是偏移量,在这种情况下为40.然后它添加索引0,1,2所以它的即将到来的40,41,42 ,43 ....
希望有所帮助
答案 1 :(得分:0)
你可以写一个范围来计算投票数。
类似的东西:
Vote.count # SELECT count(*) AS count_all FROM "votes"
Movie.vote.count # SELECT count(*) AS count_all FROM "votes" WHERE ....