I’m following Railscasts #228 in Rails 3.0.5 and ruby 1.9.2p180.
I have copied code near verbatim from the verbatim with the exception of changing the class name from Product to Player. I’m also skipping the last portion where Ryan adds arrows to denote the sort direction. I’m able to load the correct index page and see all of the desired URL’s with the desired parameters (direction and sort), but nothing is actually happening on click. The URL is changing, but the page is not reloading.
Here is my code:
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
Thanks for your help!
Edit: As requested, HTML code. You can see that the link for Position is currently desc, as I am at: http://localhost:3000/players?direction=asc&sort=abb_pos. However, no actual sorting has occurred for this column, or any other column.
<th><a href="/players?direction=asc&sort=name_e">Name</a></th>
<th><a href="/players?direction=asc&sort=team_e">Team</a></th>
<th><a href="/players?direction=desc&sort=abb_pos">Position</a></th>
<th><a href="/players?direction=asc&sort=height">Height</a></th>
<th><a href="/players?direction=asc&sort=weight">Weight</a></th>
Found the issue. I had the following code in my player model:
Player.rb
As a result, the SQL search generated looked like this: