2011-08-09 4 views
0

레일 스케이드 # 228 in Rails 3.0.5 및 루비 1.9.2p180을 따르고 있습니다.레일 3 : 정렬 할 수있는 열

클래스 이름을 제품에서 플레이어로 변경하는 경우를 제외하고 축약어 그대로 코드를 복사했습니다. Ryan이 정렬 방향을 나타 내기 위해 화살표를 추가하는 마지막 부분도 건너 뜁니다. 올바른 색인 페이지를로드하고 원하는 매개 변수 (방향 및 정렬)를 사용하여 원하는 모든 URL을 볼 수 있지만 클릭시 실제로 아무 것도 일어나지 않습니다. URL이 변경되었지만 페이지가 다시로드되지 않습니다.

ApplicationHelper

def sortable(column, title = nil) 
    title ||= column.titleize 
    direction = (column == params[:sort] && params[:direction] == "asc") ? "desc" : "asc" 
    link_to title, :sort => column, :direction => direction 
    end 

PlayersController

def index 
    @players = Player.order(sort_column + ' ' + sort_direction) 
    end 

    private 

    def find_team 
    session[:team] ||= Team.new 
    end 

    def sort_column 
    Player.column_names.include?(params[:sort]) ? params[:sort] : "name_e" 
    end 

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

감사 :

여기 내 코드입니다!

수정 : 요청대로 HTML 코드. Position에 대한 링크는 현재 다음 위치에 있음을 알 수 있습니다 : http://localhost:3000/players?direction=asc&sort=abb_pos. 그러나이 열 또는 다른 열에 대해서는 실제 정렬이 수행되지 않았습니다.

<th><a href="/players?direction=asc&amp;sort=name_e">Name</a></th> 
<th><a href="/players?direction=asc&amp;sort=team_e">Team</a></th> 
<th><a href="/players?direction=desc&amp;sort=abb_pos">Position</a></th> 
<th><a href="/players?direction=asc&amp;sort=height">Height</a></th> 
<th><a href="/players?direction=asc&amp;sort=weight">Weight</a></th> 
+0

당신이 몇 가지 런타임 html 코드를 제공 할 수있다 :

Player.rb 결과

default_scope :order => 'name_e' 

의 SQL 검색이처럼 보였다 생성 그것의 링크 ?? – Lichtamberg

답변

0

발견. 내 플레이어 모델에 다음 코드를했다 :

SELECT `players`.* FROM `players` ORDER BY name_e, avg_points desc 
1

나단 나는이 제일 먼저하고 좋을 것

:

def index 
    order = sort_column + ' ' + sort_direction 
    puts "-- order:'#{order}'" 
    ... 
end 

이 링크를 클릭 한 다음 그것을 위해 서버의 콘솔에서 볼 "-"출력을. 아마도 컴파일 된 ORDER 절을 항상 동일하게 만드는 논리적 결함이 있습니다. 링크 자체는 완벽하게 좋아 보입니다. 링크에 # 문자가없는 한 모든 클릭이 작동해야합니다 (예 : 브라우저가 콘텐츠를 다시로드해야 함). 일반적으로이 문제에 관해서는

는 전혀 노력을 당신에게 정렬 열을 얻을 수 handles_sortable_columns라는 보석,있다.

알렉스

+0

이것은 매우 이상합니다. handles_sortable_columns도 사용할 때와 똑같은 일이 발생합니다. –