Используйте символы подчеркивания вместо тире с ActiveResource XML (установите для :dasherize значение false)

Я натыкаюсь на всевозможные стены, пытаясь помешать рельсам заменить знаки подчеркивания XML тире. Я делаю сообщение в веб-службе, используя ActiveResource. Я пробовал всевозможные варианты исправлений для этого, и результаты варьировались от ошибок инициализации рельсов до полного отсутствия эффекта. Веб-служба, которую я отправляю, требует подчеркивания.

По сути, если я могу получить следующее, я должен быть хорошим:

Из http://rubydoc.info/docs/rails/2.3.8/ActiveResource/Base

:dasherize - Boolean option to determine whether or not element names should replace underscores with dashes. Default is true. The default can be set to false by setting the module attribute ActiveSupport.dasherize_xml = false in an initializer.

Может ли кто-нибудь привести пример этого? К сожалению, у меня сжатые сроки, поэтому, если кто-то может оказать помощь, это будет огромной помощью.

Спасибо!


person slimchrisp    schedule 25.03.2011    source источник


Ответы (1)


Вы пытались установить для атрибута модуля значение false в инициализаторе?

ActiveSupport.dasherize_xml = false

для rails 3+ вы можете использовать в своем ответе следующее:

render :xml => object.to_xml(:dasherize => false)

См. историю редактирования для уродливого подхода к исправлению обезьян.

person 20man    schedule 25.03.2011
comment
Я пытался, но у меня были различные ошибки, включая ActiveSupport, не имеющую этого свойства. Если кто-то может дать мне правильный пример инициализатора, устанавливающего это свойство, это даст мне то, что мне нужно. Прямо сейчас я просто переопределяю to_xml в каждой модели ActiveResource. - person slimchrisp; 26.03.2011
comment
проверьте обновленный ответ, чтобы узнать, полезен ли он. Вы также можете расширить свой собственный подкласс ActiveResource, чтобы сделать его еще чище. - person 20man; 26.03.2011
comment
+1. два комментария: 1) AFAIK render :xml => object.to_xml(:dasherize => false) должен работать в Rails 2. 2) Зачем показывать решение для взлома (последние 2 фрагмента), когда другие два способа, которыми вы показываете, работают? Не поощряйте ненужное исправление обезьян. - person tokland; 16.01.2013
comment
@tokland история редактирования показывает именно то, что вы предлагаете; Я согласен, обезьянье исправление почти всегда является грехом. В духе более актуального ответа я удаляю некрасивое. Спасибо! - person 20man; 02.02.2013