will_paginateカスタムルートをレール
-
19-09-2019 - |
質問
私はカスタムルートで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
ではなく、実際のコントローラ名の
解決
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
ドキュメントをお読みください。
他のヒント
別のオプションは、will_paginateでのparamを使用することですが、そのようにパラメータを渡します:
<%= will_paginate @products, :params => {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %>
と今、あなたのリンクは、人間が読める/ XYZのように見えるのでしょうか?ページ= 2 ...
あなたもこのルートを定義する必要があります。
タグ
map.connect 'human-readable/:name', :controller => :tags, :action => 'show'
map.connect 'human-readable/:name/page/:page', :controller => :tags, :action => 'show'
所属していません StackOverflow