1

プロジェクトは次の場所にあります

http://code-dojo.herokuapp.com/

https://github.com/TylerSangster/Code-Dojo

次のモデルのリソース レビュー サイトがあります。

class Resource < ActiveRecord::Base

  has_many :reviews


class Review < ActiveRecord::Base

  belongs_to :resource

名前、作成日時、コストによるリソースの並べ替えを追加しました。また、最も評価の高いリソースで並べ替えたいと思います。

review.score による並べ替えを作成するにはどうすればよいですか?

EDIT リソース コントローラー

  def index
    @resources = Resource.where(status: true).includes([:providers, :subjects, :formats, :reviews])
    @resources = @resources.tagged_with(params[:tag]) if params[:tag]
    @resources = @resources.order(sort_column + " " + sort_direction)
    @resources = @resources.paginate(:page => params[:page], :per_page => 10)


    respond_with @resources
  end

プライベート メソッド

  def sort_column
    Resource.column_names.include?(params[:sort]) ? params[:sort] : "name"
  end

  def sort_direction
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
  end

アプリケーション.rb

  def sortable(column, title = nil)
    title ||= column.titleize
    css_class = column == sort_column ? "current #{sort_direction}" : nil
    direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
    link_to title, {:sort => column, :direction => direction}, {:class => css_class}
  end

index.html.erb

  • <%= ソート可能な「名前」%>
  •   <li><div class="btn btn-default"><%= sortable "created_at", "Most Recent" %></div></li>
      <li><%= link_to "Highest Rated", resources_path, class:"btn btn-default" %></li>
      <li><div class="btn btn-default"><%= sortable "cost" %></div></li>
    
    4

    2 に答える 2

    0

    明らかに ActiveRecord クラスの order メソッドが必要です

    Review.order("score")
    

    あなたにも役立つ記事があります。

    お役に立てれば :)

    編集:

    class Resource < ActiveRecord::Base
      scope :ordered, :order => "some_col DESC"
    end
    
    class Review < ActiveRecord::Base
      has_many :resources
    end
    
    review.resources # uses the default ordering
    review.resources.ordered # uses the "some_col DESC" ordering
    
    于 2013-09-08T00:08:51.937 に答える