will_paginate
リンクを/list?page=1
の形式から/list/page/1
に変更しようとしています。私はこのための経路を正しく設定しましたが、will_paginate
は私のきれいなURLスタイルではなく、リンクでクエリ文字列を使用しています。そうでなければそれを伝える方法?will_paginateのURLを変更するには?
私はwill_paginate 2.3.16とRails 2.3.14を使用しています。
will_paginate
リンクを/list?page=1
の形式から/list/page/1
に変更しようとしています。私はこのための経路を正しく設定しましたが、will_paginate
は私のきれいなURLスタイルではなく、リンクでクエリ文字列を使用しています。そうでなければそれを伝える方法?will_paginateのURLを変更するには?
私はwill_paginate 2.3.16とRails 2.3.14を使用しています。
will_paginateはurl_for
ヘルパーを使用します。使用するパラメータを含むルートを定義すると、かなりのURLが生成されます。
map.connect '/lists/page/:page', :controller => 'lists', :action => 'index'
あなたはこのルートにも、あなたのコントローラのアクションに一致する可能性が上記のいずれかのルートを定義し、確認してください。さらに良い場合は、次のようなインデックスアクションを除外してください:
map.resources :lists, :except => [:index]
現在地いくつかのオプションがあります。
第一オプション:モンキーパッチWillPaginate::ActionView::LinkRenderer#url
、現在、以下のURLのロジックがあります。
def url(page)
@base_url_params ||= begin
url_params = merge_get_params(default_url_params)
merge_optional_params(url_params)
end
url_params = @base_url_params.dup
add_current_page_param(url_params, page)
@template.url_for(url_params)
end
だから、私はあなたの代わりに"/list/page/#{page}"
ような何かを行うことができますことを想像します。
もう1つの方法はレンダラーを(WillPaginate::ViewHelpers::LinkRenderer
のサブクラス化によって)完全に実装し、will_paginateを呼び出すときに:renderer => MyRendererClass
として提供することです。
ありがとうございます。私はちょうど私のルートが台無しになった!あなたの答えをありがとう、ここには恩恵があります – babonk
'map.connect'は' match '/ list/page /と呼ばれます:page' => 'lists#index''。あなたが間違っているならば、私を訂正してください.Dレールを新入社員にしてください。 – ksugiarto
あなたは正しいです。私はタイプミスを修正しました。 – iblue