ruby-on-rails – 如何在Ruby on Rails中为page_cache更改will_p
发布时间:2020-12-17 02:50:38 所属栏目:百科 来源:网络整理
导读:我想将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
我想将page_cache与will_paginate一起使用.
这个页面上有很好的信息. http://railsenvy.com/2007/2/28/rails-caching-tutorial#pagination 我写了routes.rb看起来像: map.connect '/products/page/:page',:controller => 'products',:action => 'index' 但是,url的链接不会更改为will_paginate helper中的’/ products / page /:page’. 如何在will_paginate中更改网址格式? 解决方法
是否在任何RESTful资源路由上声明了该路由?也就是说,您的路径文件应如下所示:
map.connnect '/products/page/:page',:action => 'index' map.resources :products,:except => [:index] 如果您的路线看起来正确,您可以尝试猴子修补方式will_paginate生成页面链接.它在WillPaginate :: ViewHelpers#url_for(页面)中这样做.这是一些相当复杂的逻辑,以处理一些棘手的边缘情况,但你可以编写一个新版本,首先尝试为您的产品的简单版本: # 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |