質問

私はカスタムルートで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'

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top