ここで、この上のまともなブログの記事があります:
webtempest.com/sortable-list-in-ruby-on-rails-3-almost-unobtrusive-jquery/
はまだ基本的にhttp://web.archive.org/web/20120315004343/http://webtempest.com/sortable-list-in-ruby-on-rails-3-almost-unobtrusive-jquery
で示した:
- フロントエンドを許可するようにjQuery UI sortableを使用していますdrag- DOM要素の並べ替えと並べ替え
- バックエンドusちょうど(これらは、合理的に堅牢に見えるの両方、と私は同じ画面上に新しいアイテムを作成して、概説基本的な機能のバリエーションを実装することができましたし、いくつかCSS 3つの添えものデータベースに
の更新を処理するために、ES acts_as_listあまり騒がしいことなく.your-class.ui-sortable-helper
を適切にスタイルします)。私はブラウザ間で広範にテストしていませんが、WebKitとFirefoxではうれしいようです。
ブログの例では実際にはacts_as_listをあまり使用していません - jQueryを使ってオブジェクトIDをシリアライズしてコントローラで直接反復処理しますが、必要に応じてバックエンドにこれらの機能を持たせると便利です何らかの理由でそこからの変更を自動化します。
ブログ記事からキーコード:
Javascriptを:
$(document).ready(function(){
$('#books').sortable({
axis: 'y',
dropOnEmpty: false,
handle: '.handle',
cursor: 'crosshair',
items: 'li',
opacity: 0.4,
scroll: true,
update: function(){
$.ajax({
url: '/books/sort',
type: 'post',
data: $('#books').sortable('serialize'),
dataType: 'script',
complete: function(request){
$('#books').effect('highlight');
}
});
}
});
});
ビュー:
<li id="book_<%= book.id %>">
これは、クエリを作成するために、JavaScriptで$('#books').sortable('serialize')
を可能book_5
などのIDを含み、 Railsが解析できるパラメータです。
コントローラー:
def sort
@books = Book.all
@books.each do |book|
book.position = params['book'].index(book.id.to_s) + 1
book.save
end
これは、あなたのモデルは、アクセス制御/スコープの方法に応じて、適切でない可能性があります。私自身の解決策では、代わりにparams['book']
を繰り返し、意味のある値だけが受け入れられるようにいくつかのチェック/エラー処理が含まれていました。
(PSこれはアプローチライアンベイツと非常によく似ている彼に与え、同じトピックに関するビデオキャストをpaywalled。)
(PPS私はこのように、古い質問ですが、承知していますよくStackOverflowでGoogleが私をここに連れて行ったので、私が行ったことを文書化すると思った。)
出典
2013-03-22 17:15:08
Leo
チュートリアルへのリンクが壊れている。 –
私は彼に知らせるために、投稿を書いた@Plattsyに電子メールを送った。 – Leo
私はブログを残念ながらダウンしました。 [アーカイブで見つけた](http://web.archive.org/web/20120315004343/http://webtempest.com/sortable-list-in-ruby-on-rails-3-almost-unobtrusive-jquery)ifそれは助ける – Plattsy