9

カスタムルートで will_paginate を使用するにはどうすればよいですか?

ルートには次のものがあります。

map.connect 'human-readable/:name', :controller => :tags, :action => 'show'

しかし、will_paginateは私が知る限りurl_forを使用していますが、url_forの代わりに「人間が読める」を使用したいのですが、どうすればよいですか?

編集

によって生成されたページング リンクをクリックするとwill_paginate、以下が使用されます。

"tags/show?name=Elektronikindustri&page=1"

それ以外の:

"/human-readable/show?name=Elektronikindustri&page=1"

will_paginate実際のコントローラー名の代わりにカスタム ルートを使用したい

4

3 に答える 3

9

will_paginateビュー ヘルパーには、デフォルトのリンク生成をオーバーライドするオプション:paramsがあります。

ルート構成を変更します。

map.human_readable_tag '/human-readable/:name', 
     :controller => :tags, :action => 'show'

次のようにビュー ヘルパーを呼び出しwill_paginateます。

<%= will_paginate @tag_list, 
     :params => {:controller => human_readable_tag_path(@tag_name) } %>

@tag_nameコントローラーに変数が設定されていることを確認してください。

詳細については、will_paginateビュー ヘルパーのドキュメントを参照してください。

:paramsヘルパーに渡されたオプションは、呼び出しに使用されますurl_for。コントローラー名をどのように偽装したかについては、url_for ドキュメントを参照してください。

于 2010-03-14T21:15:43.160 に答える
6

もう 1 つのオプションは、will_paginate で param を使用することですが、次のようにパラメーターを渡します。

<%= will_paginate @products, :params => {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %>

これで、リンクは human-readable/xyz?page=2... のようになります。

于 2011-05-26T05:09:00.687 に答える
0

このルートも定義する必要があります


map.connect 'human-readable/:name', :controller => :tags, :action => 'show'
map.connect 'human-readable/:name/page/:page', :controller => :tags, :action => 'show'

于 2010-03-14T11:02:22.363 に答える