2016-06-17 7 views
0

나는 다음 두 가지 모델이 있습니다 그래서더듬다 문제 : 기본 종류

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]) 

내가 무슨 일을하고 있어요 당신은 알고 계십니까? 연결된 속성별로 정렬하려면 어떻게해야합니까?

편집 :

나는 다음을 수행 할 경우, 순서가 작동하는 것을 발견했습니다 : 나는 몇 가지 조건을 추가 할 수 있지만

문제가
@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]) 

답변

0

어떻게됩니까?

+0

동일 ... 작동하지 않음 –

+0

더 많은 정보를 추가하기 위해 해당 게시물을 편집했습니다. 보세요. 감사 –

0

이 @ q.sorts.blank 경우 안 :이 작업을 수행 할 때

<%= sort_link(@q, 'tournaments.number') %>