1

will_paginate gemを使用してリストされている記事のホームページリストにあります。すべてがうまく機能しますが、改善したい点が 1 つあります。ホームページでは、データがホームコントローラーとインデックスアクションに読み込まれます。

そのため、自分のウェブサイト ( www.website.com ) をロードすると、データはhome/indexにロードされます。2 ページ目のページネーション リンクをクリックすると、リンクはwww.website.com/home/index?page=2になります。www.website.com/page/2 (またはwww.website.com/?page=2 )を最善の方法で表示したいと思います。

基本的に、ポイントは URL /home/indexから削除することです-これを行う方法はありますか?

ありがとう

4

2 に答える 2

1

この方法で実行できます-このクラスをヘルパーモジュールに追加します。たとえば、次のようになりますapp/helpers/application_helper.rb

module ApplicationHelper

  class SmartLinkRenderer < WillPaginate::ActionView::LinkRenderer
    protected
    def link(text, target, attributes = {})
      if target.is_a? Fixnum
        attributes[:rel] = rel_value(target)
        target = url(target)
      end
      attributes[:href] = target.gsub(/[?&]page=(\d+)/,'/page/\1')
      tag(:a, text, attributes)
    end
  end

end

必要に応じてカスタマイズできます。たとえば、次のようにします。

attributes[:href] = target.gsub(/home\/index/,'')

または何でも。そして、ビューでこれを行うことができます:

<%= will_paginate @items, :renderer => 'ApplicationHelper::SmartLinkRenderer' %>
于 2013-06-17T20:24:35.297 に答える