加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
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',: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读