使用will_paginate的RESTful分页路由

goz*_*ali 4 ruby-on-rails

我有这样的嵌套路线:

map.resources :foo do |foo|
  foo.resources :bar do |bar|
    bar.resources :baz
  end
end
Run Code Online (Sandbox Code Playgroud)

我在每个资源的索引操作中都有分页列表,我需要缓存每个页面,为此我需要路由是RESTful,我如何为它实现REFTful路由?

例如,我希望路线将是这样的:

http://www.example.com/foo/:id/pages/:page_number
http://www.example.com/foo/:id/bar/:id/pages/:page_number
Run Code Online (Sandbox Code Playgroud)

goz*_*ali 5

在app/helpers /中创建custom_link_renderer.rb

class CustomLinkRenderer < WillPaginate::LinkRenderer
  def page_link(page, text, attributes = {})
    @template.link_to text, "#{@template.url_for(@url_params)}/pages/#{page}", attributes
  end
end
Run Code Online (Sandbox Code Playgroud)

将此行添加到 config/environment.rb

WillPaginate::ViewHelpers.pagination_options[:renderer] = 'CustomLinkRenderer'
Run Code Online (Sandbox Code Playgroud)