gpt4 book ai didi

ruby-on-rails - 如何更改 Ruby on Rails 中 page_cache 的 will_paginate 链接格式?

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:32 25 4
gpt4 key购买 nike

我想将 page_cache 与 will_paginate 一起使用。

下面这个页面有很好的信息。

http://railsenvy.com/2007/2/28/rails-caching-tutorial#pagination http://railslab.newrelic.com/2009/02/05/episode-5-advanced-page-caching

我写的 routes.rb 看起来像:

map.connect '/products/page/:page', :controller => 'products', :action => 'index'

但是,url 的链接不会更改为 will_paginate 帮助程序中的 '/products/page/:page'。它们仍然是 'products?page=2'

如何更改 will_paginate 中的 url 格式?

最佳答案

该路由是否在任何 RESTful 资源路由之上声明?也就是说,您的路由文件应如下所示:

map.connnect '/products/page/:page', :controller => 'products', :action => 'index'
map.resources :products, :except => [:index]

如果您的路线看起来正确,您可以尝试使用 will_paginate 生成页面链接的方式进行猴子修补。它在 WillPaginate::ViewHelpers#url_for(page) 中这样做。为了处理一些棘手的边缘情况,这是一些相当复杂的逻辑,但您可以编写一个新版本,首先为您的 product 尝试简单版本:

# in lib/cache_paginated_projects.rb
WillPaginate::ViewHelpers.class_eval do
old_url_for = method(:url_for)
define_method(:url_for) do |page|
if @template.params[:controller].to_s == 'products' && @template.params[:action].to_s == 'index'
@template.url_for :page => page
else
old_url_for.bind(self).call(page)
end
end
end

关于ruby-on-rails - 如何更改 Ruby on Rails 中 page_cache 的 will_paginate 链接格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com