2015-10-15 47 views
0

我遵循Railscast的第228集在我的應用程序中創建可排序的表列。Railscast#228可排序表列:不會改變方向

我的問題:當我第一次按列名時 - 它以升序顯示訂單。下次我點擊 - 它不會自動以降序顯示記錄;然而,如果我手動編寫desc:「http://localhost:3000/admin/users/2/records?direction=desc&sort=created_at」 - 它完美的工作;什麼是問題?

我的控制器:

def records 
    @records = @user.records.paginate(page: params[:page], per_page: 20).order(sort_column + " " + sort_direction) 
    end 

private 
    def sort_column 
    Record.column_names.include?(params[:sort]) ? params[:sort] : "created_at" 
    end 

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

我application_helper:

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 

我的觀點:

<tr> 
    <th><%= sortable "created_at" %></th> 
</tr> 
+0

我想你需要設置這些參數在rails路徑(位於config/routes.rb)。 –

+0

你能給我舉個例子嗎? – Nadiya

+0

請問您可以發佈點擊列名重定向您的網頁的網址嗎? – basiam

回答

1

我不得不寫:

direction = sort_column && sort_direction == "asc" ? "desc" : "asc" 

而不是:

direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"