9

如何将 will_paginate 与自定义路由一起使用?

我的路线中有以下内容:

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

但据我所知,will_paginate 使用 url_for,但我想使用“人类可读”而不是 url_for,但是如何?

编辑

当我单击生成的分页链接时will_paginate,它正在使用:

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

代替:

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

我想will_paginate使用我的自定义路由而不是实际的控制器名称

4

3 回答 3

9

will_paginate视图助手有一个覆盖默认链接生成的:params选项。

更改您的路线配置:

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

调用will_paginate视图助手如下:

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

确保您已@tag_name在控制器中设置变量。

有关详细信息,请阅读will_paginate查看帮助程序文档

传递给助手的:params选项用于调用url_for. 所以请阅读我们如何伪造控制器名称的url_for 文档

于 2010-03-14T21:15:43.160 回答
6

另一种选择是在 will_paginate 中使用参数,但像这样传递参数:

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

现在你的链接看起来像人类可读/xyz?page=2...

于 2011-05-26T05:09:00.687 回答
0

你也需要定义这条路线


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

于 2010-03-14T11:02:22.363 回答