[英]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.