リストを別の方法で並べ替える

914 ワード

まずhelperメソッドを書きます.
 
  def link_to_order(order)
    link_to(order.capitalize,
      :controller => "spaces",
      :action => "all",
      :params => { "order" => order })
  end

 
ページコール:
 
<%= link_to_order("nickname") %>
<%= link_to_order("password") %>

 
具体的な実装:
 
  def all
    @order = params[:order] || "id"
    sort_proc = case @order
    when "nickname" then lambda {|r| [r.nickname] }
    when "nickname",
        "password" then lambda {|r| [r.send(@order)]}
    when "password" then lambda {|r| r.password }
    end
    @spaces = Space.find(:all).sort_by &sort_proc
  end