我想将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 helper中的'/ products/page /:page'.它们仍然是'产品?page = 2'
如何在will_paginate中更改网址格式?
是否在任何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