は、私は次の二つのモデルがあります。だから、掻き回すの問題:デフォルトのソート
class Game
belongs_to :tournament, inverse_of: :games
validates_presence_of :name
end
class Tournament
has_many :games, dependent: :destroy
validates_numericality_of :number
end
を、私は彼らのトーナメントの数を示しゲームのリストを持っており、デフォルトではリストを注文するように私はしたいですトーナメントの番号。
@q = Game.search(params[:q])
@q.sorts = 'tournaments_number' if q.sorts.blank?
@q = @q.result(distinct: true).page(params[:page])
問題は、それが数でリストを注文されていないです。私のコントローラで
私はこのような何かを持っています。クエリ
@q = Game.search(params[:q])
@q.sorts = 'tournaments_number' if q.sorts.blank?
puts @q.result.to_sql # => SELECT * FROM games
@q = @q.result(distinct: true).page(params[:page])
を見てみましょう。しかし、私はゲームの分野で注文した場合、それは素晴らしい作品:
@q = Game.search(params[:q])
@q.sorts = 'name' if q.sorts.blank?
puts @q.result.to_sql # => SELECT * FROM games ORDER BY name
@q = @q.result(distinct: true).page(params[:page])
あなたは私が間違って何をやっている知っていますか?関連付けられた属性でソートするにはどうしたらいいですか?
EDIT:
私は次の操作を行う場合は、注文が働くことが判明しました:
@q = Game.includes(:tournament).order('tournaments.number').search(params[:q])
puts @q.result.to_sql # => SELECT * FROM games INNER JOIN tournaments ON games.tournament_id = tournaments.id ORDER BY tournaments.number
@q = @q.result(distinct: true).page(params[:page])
問題は、私はいくつかの条件を追加することができますが、私がする必要がある、ということです私が他の場所でsort_linkを使うと、それがransackと動作するようにしてください。それは動作しません。
@q = Game.search(params[:q])
@q.sorts = 'tournaments.number' if q.sorts.blank?
@q = @q.result(distinct: true).page(params[:page])
同じです...うまくいきません –
私は詳細を追加するために投稿を編集しました。見てみましょう。ありがとう –