当前位置:  开发笔记 > 后端 > 正文

如何在Ruby on Rails中为page_cache更改will_paginate中的链接格式?

如何解决《如何在RubyonRails中为page_cache更改will_paginate中的链接格式?》经验,为你挑选了1个好方法。

我想将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中更改网址格式?



1> James A. Ros..:

是否任何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

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有