Rails will_paginate custom route Rails will_paginate custom route ruby-on-rails ruby-on-rails

Rails will_paginate custom route


The will_paginate view helper has a :params option for overriding the default link generation.

Change your routes configuration:

map.human_readable_tag '/human-readable/:name',      :controller => :tags, :action => 'show'

Invoke the will_paginate view helper as follows:

<%= will_paginate @tag_list,      :params => {:controller => human_readable_tag_path(@tag_name) } %>

Make sure you have set the @tag_name variable in your controller.

For more information read the will_paginate view helper documentation.

The :params option passed to the helper is used to invoke url_for. So read the url_for documentation for how we faked a controller name.


Another option is to use param in will_paginate but passing in the parameter like so:

<%= will_paginate @products, :params => {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %>

and now your links will look like human-readable/xyz?page=2...


You need define this route too

map.connect 'human-readable/:name', :controller => :tags, :action => 'show'map.connect 'human-readable/:name/page/:page', :controller => :tags, :action => 'show'