如何自定义will_paginate的链接基础?

4
<%= will_paginate(@posts) %> 
# will generate the links like this '<a href="/posts?page=n">a link</a>'

如果我想基于/contents更改链接<a href="/contents?page=n">a link</a>,该怎么办?

看起来没有这个选项,求助!

1个回答

6

您可能需要编写自己的LinkRenderer。请参阅this博客文章以及LinkRenderer的code

简要说明:

environment.rb中,您需要类似于以下内容:

WillPaginate::ViewHelpers.pagination_options[:renderer] = 'MyLinkRenderer'

application_helper.rb
class MyLinkRenderer < WillPaginate::LinkRenderer
  def page_link(page, text, attributes = {})
    url = url_for(page) # you should find a better way to do this...
    url.sub!('posts','contents')
    @template.link_to text, url, attributes
  end
end

除了这个答案之外:Rails 3中的autoload_paths不再包括lib/,因此如果您将MyLinkRenderer放在那里,请确保附加autoload_paths。 - awendt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接