1

我正在使用带有 Ransack 和 Kaminari 的 Rails 4,我有这条路线:

resources :domains do
  resources :backlinks do
    collection { post :search, to: 'backlinks#index' }
  end
end

我发现 kaminari 分页会生成错误的链接,如下所示:

/domains/16/backlinks/search?page=2

代替

/domains/16/backlinks?page=2

我浏览了 Kaminari gem 的源代码,发现它只是使用带有参数的 url_for 助手:

class Tag
  def initialize(template, options = {}) #:nodoc:
    @template, @options = template, options.dup
    @params = @options[:params] ? template.params.merge(@options.delete :params) : template.params
  end
  ...
  def page_url_for(page)
    @template.url_for @params.merge(@param_name => (page <= 1 ? nil : page))
  end
end

然后我在我看来测试了这个简单的代码:

= url_for params

(参数是 {"action"=>"index", "controller"=>"backlinks", "domain_id"=>"16"})

是的,它产生了

/domains/16/backlinks/search

我的问题是为什么这个甚至不是“获取”的额外收集路线(搜索)对 url 创建的影响那么大……这是“正常”吗?

我的第二个问题是如何摆脱问题并以某种方式告诉 Kaminari 生成正确的链接,即使我保留了那条额外的路线。

4

1 回答 1

0

您的路线应如下所示以避免search

resources :domains do
  resources :backlinks
end
于 2013-11-06T19:03:00.063 回答