2009-03-24 13 views
1

Railsアプリケーションのリソースに対してソートとページネーションを実装し、それをRESTfulに保つ方法に関するヒントを教えてください。Rails RESTfulアプリケーションのページ分割とソート

ページ番号とソートフィールドのパラメータをきれいにマッピングするにはどうすればよいですか? (私は現在map.resourcesを使用しています:x私のアプリのすべてのリソースのため)

私が知っておくべき他のパフォーマンス問題は? (キャッシングなど)

ありがとうございます。

EDIT私は質問をもっとgeneric oneに改め、もっと回答が得られることを願っています。私はそれがもはや関連性がないので、これを閉じるために投票するつもりです。回答のためにありがとうございました。

http://dev.nozav.org/rails_ajax_table.html

http://dev.nozav.org/ajaxtable/(これはデモアプリケーションである)私は自分のアプリケーションの一つで同じ基本的なコードを使用している

答えて

2

私はあなたがこの記事を見てお勧めします。彼らが記述するAJAXの実装は使用しませんでしたが、ソートヘルパーを使用してソートを可能にするようにビューを構成しました。ソートヘルパーでは、Ajax関連のものを取り出したいだけです。私の結果は次のようになります。

def sort_link_helper(text, param) 
    key = param 
    key += "_reverse" if params[:sort] == param 
    parameters = params.merge({:sort => key, :page => params[:page], :action => controller.action_name }) 
    link_to(text, url_for(parameters)) 
end 

def sort_td_class_helper(param) 
    result = 'class="sortup"' if params[:sort] == param 
    result = 'class="sortdown"' if params[:sort] == param + "_reverse" 
    return result 
end 

この実装に関する最も良い点は、RESTful、DRY、使いやすいことです。

+0

返信いただきありがとうございます。しかし、この場合のキャッシングはどうですか?私はこれに問題があると思う。 また、 "?page = x&sort = y"を使用すると、きれいなIMHOではありません。 – andi

+0

Hmmm、よく私はキャッシュについて多くのことを知っていませんが、SQLクエリの結果を保存してキャッシュから結果をソートできませんでしたか?また、意味のあるページとソート変数を格納する他の方法についてはわかりませんが、私は提案につきました – vrish88

+0

"注意:ページキャッシュはすべてのパラメータを無視するので、/ products/list?page = 1ファイルシステムに/products/list.htmlとして書き出され、誰かが/ products/list?page = 2を要求すると、page = 1と同じ結果が返されます。 " – andi

5

will_paginateを試しましたか?それはあなたの特定のニーズを満たしていないいくつかの理由はありますか? (http://github.com/mislav/will_paginate/tree/master

+0

私はすでにwill_paginateプラグインを使用しています。私は、RESTの部分についてのさらなる答えを期待していました。私は、「レール特有の」部品を取り除き、質問を再整理すると思います。 – andi

関連する問題