Rails will_paginate如何生成完整的URL?

时间:2019-02-06 06:30:43

标签: ruby-on-rails will-paginate

我在我的应用程序中使用will_paginate,并且分页链接的href类似于“ posts?page = 2”,但我希望它们为“ http://www.fu.com/posts?page=2”。我该怎么办?

2 个答案:

答案 0 :(得分:2)

您可能想对默认的LinkRenderer进行猴子补丁,以便使用正确的选项生成网址。

url method of WillPaginate's Rails Helpers中,您拥有

    @base_url_params ||= begin
      url_params = merge_get_params(default_url_params)
      url_params[:only_path] = true
      merge_optional_params(url_params)
    end

因此,:only_path选项被强制为true。但是您可以使merge_optional_params(此后称为)为您解决问题:

module WillPaginateForceFullUrl
  def merge_optional_params(url_params)
    url_params = super
    url_params[:only_path] = false
    url_params
  end
end

WillPaginate::ActionView::LinkRenderer.prepend(WillPaginateForceFullUrl)

将此代码粘贴在初始化程序中或lib下,但请确保已从初始化程序加载该代码。您的网址现在应该包含完整的网址。

答案 1 :(得分:0)

为您的应用程序在APP_URL = 'http://www.fu.com/'中添加常量production.rb

类似地,您可以为localhost:3000/添加development.rb

您可以在助手中创建方法以使其像

那样调用
def full_url(url)
  APP_URL + url
end