Because it's SQL-Injection save you can put it in your link_to method as :order => '+name' and then call #parse_order( params[:order] ).
Examples:
'+name' => 'name'
'+lastname+firstname' => 'lastname, firstname'
'+lastname-gender' => 'lastname, gender DESC'
module ActiveRecord class Base class << self def parse_order( order ) order = order.to_s.gsub /([ \+\-][a-z_]+)/ do |match| next unless self.column_names.include?( match[1..-1] ) case match[0, 1] when '-' then "#{ match[1..-1] } DESC, " else "#{ match[1..-1] }, " end end and order[0..-3] end end end end