2011-05-12 66 views
1

我有一个场地的桌子,每个场所都有很多评论,每个评论都有一个评分(1-5),我的场地索引页目前显示所有场馆都是按照他们创建的顺序排列的,我改变这个来显示顶部平均评分最高的场地?如何按顺序排列我的记录部分?

我的场馆控制器指数目前看起来是这样的:

def index 
    if 
     @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]) 
    else 
     @venues = Venue.all 
    end 
    end 

感谢您的帮助!

+0

您可能会发现需要显示如何生成该列表的代码。假设你有一个数据库,它将涉及单词“GROUP BY”,“ORDER BY”和函数“AVG()”。 – Orbling 2011-05-12 20:07:59

回答

0

使用Rails 3?这是一个起点。

def index 
    if 
    @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]).joins(:reviews).order("reviews.rating DESC") 
    else 
    @venues = Venue.joins(:reviews).order("reviews.rating DESC").all 
    end 
end 
+0

谢谢你看看,我使用rails 3代码给出了一个无法将符号转换为字符串错误,我目前使用@ venue.reviews.average(:rating)来显示一个场地的平均评分每个场馆显示页面 – Dave 2011-05-12 22:04:20

+0

我的方法名称错误,尝试使用'连接' – 2011-05-13 01:02:33

+0

创建多个副本的场地部分,如果一个场地有3个评论,所以3个评级,它显示该场地的3个部分(场地名称是在索引页面出现3次,如果场地有2次评论,则出现两次)。有没有什么可以按照.sort_by {@ reviews.average(:rating)}的方式完成?这不起作用,但我是超新的,再次感谢 – Dave 2011-05-13 22:21:51