12

WillPaginate :: ViewHelpers::LinkRendererのリンクメソッドを次のようにオーバーライドするカスタムwill_paginateレンダラーがあります。

   def link(text, target, attributes = {})
      "<a href='/users/95/friends_widget?page=#{target}' rel='next' data-remote='true'>#{text}</a>"
   end

...そしてそれはうまく機能しますが、そのリンクにハードコードされた95が表示されている場合を除きます。Railsビューを介してパラメーター(ユーザーまたはユーザーのIDなど)をカスタムレンダラーに渡すにはどうすればよいですか?

<%= will_paginate(@user_friends, :remote => true, :renderer => FriendsRenderer) %>

それとも私が見逃しているものがありますか、それを行うためのより簡単な方法はありますか?

ところで:@user_friendsはカスタムレンダラーでは使用できません。私はすでにそのwill_paginate呼び出しの最後にパラメーターを追加しようとしました(例:user => user)

4

2 に答える 2

23

will_paginateを使用する:paramsと、リンクを渡すことができます。

will_paginate(@user_friends, :params => { :user_id => 95 })
于 2012-08-01T10:09:23.040 に答える
4

意見:

<%= will_paginate @user_friends, :renderer => 'FriendsRenderer',
                         :remote => true,
                         :link_path => friends_widget_user_path(@user) %>

class FriendsRenderer < WillPaginate::LinkRenderer
  def prepare(collection, options, template)
    @link_path = options.delete(:link_path)
    super
  end

protected
  def link(page, text, attributes = {})
    # Here you can use @link_path   
  end
end

これはwill-paginateバージョンで機能することに注意してください:2.3.6

于 2011-07-26T18:25:39.870 に答える