从单独的控制器部分2中按Sum排序

时间:2010-05-20 03:44:49

标签: ruby-on-rails ruby activerecord partial-views

好的,所以在添加一些控制器和重新定位某些代码之前我已经this working just fine了。我觉得我错过了一些非常简单的东西,但花了好几个小时试图弄清楚发生了什么。情况就是这样。

class Question < ActiveRecord::Base
  has_many :sites
end

class Sites < ActiveRecord::Base
  belongs_to :questions
end

我正在尝试按站点表中'like'列的总和显示我的网站。从我的previous StackOverflow question开始,当我在/ views/sites/index.html.erb文件中调用partial时,我的工作正常。然后,我将部分移动到/ views/questions/show.html.erb file中,并且它成功显示了网站,但未能像从“网站”视图中调用时那样对它们进行排序。

我从/views/questions/show.html.erb文件调用partial,如下所示:

<%= render :partial => @question.sites %>

这里是SitesController#index code

class SitesController < ApplicationController

  def index
    @sites = @question.sites.all(:select => "sites.*, SUM(likes.like) as like_total",
             :joins => "LEFT JOIN likes AS likes ON likes.site_id = sites.id",
             :group => "sites.id",
             :order => "like_total DESC")

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @sites }
    end
  end

2 个答案:

答案 0 :(得分:0)

我认为应该是

@sites = @question.sites.all(:select => "sites.*, SUM(likes.like) as like_total",
         :joins => "LEFT JOIN likes AS likes ON likes.site_id = sites.id",
         :group => "sites.id",
         :order => "SUM(likes.like) DESC")

答案 1 :(得分:0)

啊......事实证明我已将@sites控制器代码从SitesController移动到QuestionsController Show操作。然后,我必须在/views/questions/show.html.erb页面中更改我的部分

<%= render :partial => @question.sites %> 

<%= render :partial => @sites %>