我的路线是这样定义的
match '/user/:id' => 'user#show', :as => :user
如果由于某种原因传递了一个 nil ID,我希望路由助手只返回“#”,如果 ID 不是 nil,我希望它返回像“/user/123”这样的正常路径。或者有没有更好的方法来做到这一点。这个路由助手已经在我的代码中的很多地方使用过,所以我不想改变它。相反,我正在寻找一个会影响 user_path 的所有实例的地方。
谢谢
我的路线是这样定义的
match '/user/:id' => 'user#show', :as => :user
如果由于某种原因传递了一个 nil ID,我希望路由助手只返回“#”,如果 ID 不是 nil,我希望它返回像“/user/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)