Rails will_paginate custom route

匿名 (未验证) 提交于 2019-12-03 01:31:01

问题:

How can I use will_paginate with a custom route?

I have the following in my routes:

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

but will_paginate uses url_for as far as I can tell, but I want to use 'human-readable' instead of url_for, but how?

Edit

When I click the paging link generated by will_paginate, it's using:

"tags/show?name=Elektronikindustri&page=1" 

Instead of:

"/human-readable/show?name=Elektronikindustri&page=1" 

I want will_paginate to use my custom route instead of the actual controller name

回答1:

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:

 {: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.



回答2:

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

 {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %> 

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



回答3:

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' 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!