我的路線是這樣定義的如何覆蓋rails中的路徑助手?
match '/user/:id' => 'user#show', :as => :user
如果由於某種原因無ID傳遞我希望路由助手只返回「#」,如果ID不是零,我想它返回像「正常路徑/用戶/ 123' 。 或者有沒有更好的方法來做到這一點。 這條路由助手已經在我的代碼中使用了很多地方,所以我不想改變它。相反,我正在尋找一個影響user_path所有實例的地方。
感謝
我的路線是這樣定義的如何覆蓋rails中的路徑助手?
match '/user/:id' => 'user#show', :as => :user
如果由於某種原因無ID傳遞我希望路由助手只返回「#」,如果ID不是零,我想它返回像「正常路徑/用戶/ 123' 。 或者有沒有更好的方法來做到這一點。 這條路由助手已經在我的代碼中使用了很多地方,所以我不想改變它。相反,我正在尋找一個影響user_path所有實例的地方。
感謝
我這樣做是在app/helpers/url_helper.rb
module UrlHelper
def resource_path(resource, parameters = {})
# my implementation
"/#{resource.category}/#{resource.name}#{ "?#{parameters.to_query}" if parameters.present? }"
end
end
我知道有很多方法來定義這樣一個嵌套的路線,但我已經使用幾部分該路由代碼庫,因爲這個問題的狀態。
我試圖別名老方法,但不承認:
alias_method :old_resource_path, :resource_path
module CustomUrlHelper
def user_path(user, options = {})
if user.nil?
"#"
else
super
end
end
end
# Works at Rails 4.2.6, for older versions try http://stackoverflow.com/a/31957323/474597
Rails.application.routes.named_routes.url_helpers_module.send(:include, CustomUrlHelper)
保存了一天,謝謝!通常應該在'routes.rb'中調整路線,他們的路徑助手應該總是指向同一個地方。但有時候你需要url助手來生成路徑,而不是'routes.rb'中定義的路徑,也就是說,如果你正在爲通過ajax調用的Devise操作提供前端外觀。 – zrisher 2017-06-22 07:23:07
這裏一樣,有誰知道? – juanpastas 2013-05-08 16:55:39