2017-10-24 10 views
0

関連付けられた列の並べ替えを実行しようとしているため、ユーザーは曲名、アーティスト、アルバム、ジャンル、長さで並べ替えることができます。しかし、私はそれを行う方法がわかりません。 今のところ私は曲名を名前でソートすることしかできません。関連する列のテーブルの並べ替え

UPDATE

だから、最初の列が働いています。しかし、私は列の残りの部分で並べ替えることはできません、彼らは 'asc'または 'dsc'に戻すことができます私はそれらを並べ替えるために曲名をクリックした場合。私は理にかなっていますか?ここで

は、以下の私のコードです:

SongsController

def index 
    @songs = Song.order("#{sort_column} #{sort_direction}").paginate(:page => params[:page], :per_page => 10) 
    @latest_albums = Album.order('created_at DESC').last(5) 
end 

    private 

    def sortable_columns 
    ["name", "length", "artist", "album", "genre"] 
    end 

    def sort_column 
    sortable_columns.include?(params[:column]) ? params[:column] : "name" 
    end 

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

SongHelper

def sort_link(column, title = nil) 
    title ||= column.titleize 
    direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc" 
    icon = sort_direction == "asc" ? "fa fa-angle-double-up" : " fa fa-angle-double-down" 
    icon = column = sort_column ? icon : "" 
    link_to "#{title}<span class='#{icon}'></span>".html_safe, {column: column, direction: direction} 
    end 

ビュー

<thead> 
     <tr> 
     <th>#</th> 
     <th width="10%"></th> 
     <th><%= sort_link "name", "Song" %></th> 
     <th><%= sort_link "artist_id", "Artist" %></th> 
     <th><%= sort_link "album_id" %></th> 
     <th><%= sort_link "length" %></th> 
     <th><%= sort_link "genre_id" %></th> 
     <th></th> 
     <th></th> 
     </tr> 
    </thead> 

ありがとう!

icon = column == sort_column ? icon : "" 

+0

に列を等しくするであるのに対し、あなたは、columnsort_columnに等しいかどうかを確認する必要がありますコード内で動作していないか、動作しています。すべてのコードを見ると、誰が問題がどこにあるのか把握するのに役立ちません。 – kiddorails

+0

ちょっと@kiddorails、それは今では私は彼らの名前で曲を並べ替えることができるようになりました。最初の列が機能しています。しかし、私は列の残りの部分で並べ替えることはできません、彼らは 'asc'または 'dsc'に戻すことができます私はそれらを並べ替えるために曲名をクリックした場合。私は理にかなっていますか? – Kurta

+0

任意のsort_linkをクリックすると、要求のレール・サーバー・ログを表示します。デバッグの最初のステップは、リクエストでどのパラメータが送信されているかを確認することです。 – kiddorails

答えて

0

変更

icon = column = sort_column ? icon : "" 

、あなたの元のコードは、特にご意見をお聞かせくださいsort_column

関連する問題