Делать что-то вроде это есть оборотная сторона потенциально может привести к неожиданному поведению, когда кто-то приходит, чтобы посмотреть на ваш код (т. е. пока они не обнаружат ваш переопределенный метод, они могут задаться вопросом, почему он ведет себя как dasherize false, если это явно не указано). Тем не менее, в ApplicationController или одном из ваших конкретных контроллеров вы можете переопределить метод рендеринга.
например. что-то вроде:
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 еще быть переопределение в ваших звонков, чтобы сделать вы можете сделать Hash слияния в другом направлении, например,
options = {:dasherize => false}.merge(options)
надеюсь, что он не должен разорвать любую другую часть приложения, использующую функцию рендеринга ... он должен работать таким образом только при вызове контроллера (я думаю, что это единственное место, из которого оно вызвано). – luca