如何覆盖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
- Rails i18n和javascript中的路由
- 将ActiveRecordvalidation错误转换为API耗材错误
- 错误’不兼容的字符编码:ASCII-8BIT和UTF-8’由于8位编码的cookie(Rails 3和Ruby 1.9)
- 当查询使用包含时,Rails如何处理has_many?
- NameError:has_many通过关系的未初始化常量
- named_scope的问题会导致will_paginate出错 – 如何在计数中包含group_by?
- 为什么在around_filter或after_filter中的redirect_to不起作用?
- RoR Postgresql时区组不在Heroku上工作
- 对于简单路由,RSpec控制器测试失败