Search code examples
rubyhyperlinkhrefwill-paginatecustomization

How to customize the will_paginate link base?


<%= will_paginate(@posts) %> 
# will generate the links like this '<a href="/posts?page=n">a link</a>'

What should I do if I want to change the href base on /contents, etc. <a href="/contents?page=n">a link</a> ?

It seems that there is no options for this , help!


Solution

  • You will probably have to write your own LinkRenderer. See this blog post, and the code for LinkRenderer.

    Briefly:

    in environment.rb you need something like this:

    WillPaginate::ViewHelpers.pagination_options[:renderer] = 'MyLinkRenderer'
    

    in application_helper.rb

    class MyLinkRenderer < WillPaginate::LinkRenderer
      def page_link(page, text, attributes = {})
        url = url_for(page) # you should find a better way to do this...
        url.sub!('posts','contents')
        @template.link_to text, url, attributes
      end
    end