如何覆盖rails中的路径路径助手?

我的路线是这样定义的

match '/user/:id' => 'user#show', :as => :user 

如果由于某种原因传递了nil ID,我希望路由助手只返回’#’,如果ID不是nil,我希望它返回正常路径,如’/ user / 123’。 或者有更好的方法来做到这一点。 这个路由助手已经在我的代码中的很多地方使用,所以我不想改变它。 相反,我正在寻找一个会影响user_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) 

我在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