D&Dでソート出来る様にする。

sortable_elementにより、ソート処理を実装します。
相変わらず、ヘルパー使いまくりです。

12.sortable_elementをrhtmlに配置。
sortable_elementヘルパを利用してソート順を弄る様に追加します。

<html>
  <head>
    <title>
      名簿管理アプリケーション
    </title>
    <%= javascript_include_tag :defaults %>
  </head>
  <body>
    <hr>

    <ul id="members">
      <% for @member in @members %>
      <li id="member_<%=@member.id %>" >
         名前 : <%= in_place_editor_field :member, 'name'     , {}, { :save_text=>"保存", :cancel_text=>"取消" } %> /
         どんな人 : <%= in_place_editor_field :member, 'atitude'     , {}, { :save_text=>"保存", :cancel_text=>"取消" } %> /
        <%= link_to_remote("削除", :url => { :action => :del,:id => @member.id }) %>
      </li>
      <% end %>
    </ul id="members">

    <hr>
    <%= form_tag :action => 'add' , :id => @member %>
      <p>名前 <%= text_field 'member','name' %>どんな人 <%= text_field 'member','atitude' %><%= submit_tag '登録' %></p>
    <%= end_form_tag %>
    <%= sortable_element 'members',:url => { :action => "sort" } , :complete => visual_effect(:highlight, 'members',:duration => 0.5) %>
  </body>
</html>

13.毎度のごとく受け皿を・・・。
ソート順を保存するsortメソッドを実装します。

class TestController < ApplicationController
  in_place_edit_for :member, :name
  in_place_edit_for :member, :atitude

  def list
    @members = Member.find(:all , :order => "position")
  end

  def add
    @member = Member.new(params[:member])
    @member.save! unless @member.name.blank?

    redirect_to :action=>'list'
  end

  def del
    Member.find(params[:id]).destroy
  end


  def sort
     params[:members].each_with_index do | member, idx |
       sort_member = Member.find(member)
       sort_member.position = idx + 1
       sort_member.save
     end
     render :nothing => true
  end
end

これで完成です。
送られてきたパラメータを元に、ソート順を保存してます。