当我在 Rails 中渲染 :xml 时,我总是想要 :dasherize => false 选项。有没有办法将其设置为应用程序范围的默认值,当然无需修改 Rails 源代码?
也许一个渲染函数以某种方式优先于第一个函数,然后使用此选项调用它......
这样做的缺点是,当其他人查看您的代码时,可能会导致意外行为(即,在他们发现您的重写方法之前,他们可能想知道为什么在未明确指定的情况下它的行为像 dasherize false 一样。 )也就是说,在 ApplicationController 或您的特定控制器之一中,您可以覆盖 render 方法。
例如就像是:
class MyController < ApplicationController
def render(options = nil, extra_options = {}, &block)
options ||= {} # initialise to empty hash if no options specified
options = options.merge(:dasherize => false) if options[:xml]
super(options, extra_options, &block)
end
end
如果您希望允许 dasherize 在渲染调用中仍然可以被覆盖,您可以在另一个方向进行哈希合并,例如
options = {:dasherize => false}.merge(options)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)