我在尝试将will_paginate
链接从/list?page=1
的格式更改为/list/page/1
。我的路线设置正确,但will_paginate
正在链接中使用查询字符串,而不是我漂亮的URL样式。如何区别?如何更改will_paginate网址?
我使用will_paginate 2.3.16和Rails 2.3.14。
我在尝试将will_paginate
链接从/list?page=1
的格式更改为/list/page/1
。我的路线设置正确,但will_paginate
正在链接中使用查询字符串,而不是我漂亮的URL样式。如何区别?如何更改will_paginate网址?
我使用will_paginate 2.3.16和Rails 2.3.14。
will_paginate使用url_for
帮助程序。如果你定义包含它使用的参数的路由,它应该生成漂亮的URL。
map.connect '/lists/page/:page', :controller => 'lists', :action => 'index'
请确保,你定义了这个路线上述也可以匹配你的控制器操作的任何路线。更好:排除像这样的索引动作:
map.resources :lists, :except => [:index]
您有几种选择在这里:
第一种选择:猴子补丁WillPaginate::ActionView::LinkRenderer#url
,目前有以下网址逻辑:
def url(page)
@base_url_params ||= begin
url_params = merge_get_params(default_url_params)
merge_optional_params(url_params)
end
url_params = @base_url_params.dup
add_current_page_param(url_params, page)
@template.url_for(url_params)
end
所以,我想,你可以这样做,而不是"/list/page/#{page}"
。
另一种方法是完全实现渲染器(通过继承WillPaginate::ViewHelpers::LinkRenderer
),然后在调用will_paginate时将其作为:renderer => MyRendererClass
提供。
谢谢。我刚把我的路线搞砸了!感谢您的回答,这里有一个赏金 – babonk
现在'map.connect'叫做'match'/ list/page /:page'=>'lists#index''。 Anw,你的'map.connnect' @iblue上有一个错字,只是说因为这个帖子对我有用:D如果我错了,请纠正我,rails新手 – ksugiarto
你是对的。我纠正了错字。 – iblue