簡體   English   中英

url_for的工作原理-ransack和kaminari問題

[英]how url_for works - problems with ransack and kaminari

我在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輔助函數與params結合使用:

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生成正確的鏈接。

您的路線應如下所示以避免search

resources :domains do
  resources :backlinks
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM