Rails3: How to pass param into custom will_paginate renderer?

yalestar picture yalestar · Jul 26, 2011 · Viewed 8.5k times · Source

I've got a custom will_paginate renderer that overrides WillPaginate::ViewHelpers::LinkRenderer's link method like so:

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

...and that works great, except you can see the hard-coded 95 in that link. How would I pass a parameter (e.g. user or user's ID) into the custom renderer via the Rails view?

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

Or is there something I'm missing, some easier way to do it?

BTW: @user_friends isn't available in the custom renderer, and I've already tried just adding params onto the end of that will_paginate call, e.g. :user => user)

Answer

Henrik N picture Henrik N · Aug 1, 2012

will_paginate lets you pass in :params for the links:

will_paginate(@user_friends, :params => { :user_id => 95 })