我修改了polymorphic_path方法,因为只要语言环境与默认语言环境相同,我就想添加一个nil语言环境。
方法如下:
module ActionDispatch
module Routing
module PolymorphicRoutes
alias_method :old_polymorphic_path, :polymorphic_path
def polymorphic_path(record_or_hash_or_array, options = {})
opt = options.clone
if I18n.locale == I18n.default_locale
opt = opt.merge({locale: nil})
end
old_polymorphic_path(record_or_hash_or_array, opt)
end
end
end
end
除非我在任何给定的控制器或帮助器中调用一个新的polymophic_path实例,否则一切都像魅力一样。然后更改服务器崩溃的参数“堆栈级别太深。
它正在调用“old_polymorphic_path(record_or_hash_or_array,opt)”一百万次。但是,这在视图中不会发生。
这是修补方法的正确方法吗?是什么导致了这种“堆栈级太深”错误以及如何修复它?