I am just trying to work through David Black's block of code from Ruby For Rails, on page 80.
def all @order = params[:order] || "number" sort_proc = case @order when "author" then lambda {|r| [r.user.name.downcase, r.number] } when "status","title" then lambda {|r| [r.send(@order).downcase, r.number]} when "number" then lambda {|r| -r.number } end @rcrs = Rcr.find(:all).sort_by &sort_proc end
I can get this to work just fine. But how about this...if the user passes the "order" parameter as author, I want to sort nearly the same way, but with r.user.name descending. I know this errors, but I mean something like: when "author" then lambda {|r| [r.user.name.downcase DESC, r.number] }
How do you control the ascending/descending on one of the two sort parameters?
Also, in the "number" sort option, what is the - doing in the part -r.number? I have experimented with it, but haven't determined what it is doing.
Thanks, Rob