2011-03-25 45 views
6

我点击各种墙壁试图阻止使用破折号替换XML下划线的钢轨。我正在使用ActiveResource发布到Web服务。我已经尝试了各种各样的修复方法,结果从rails初始化错误到结果都没有变化。我要发布的Web服务需要下划线。使用下划线而不是破折号与ActiveResource XML(设置:dasherize为false)

本质上说,如果我能得到到位下面,我应该不错:

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. 

有人可以提供这方面的一个例子吗?我很不幸地处于紧张的时间表,所以如果有人能提供帮助,那将是一个巨大的帮助。

谢谢!

回答

13

您是否尝试在初始化程序中将模块属性设置为false?

ActiveSupport.dasherize_xml = false 

钢轨3+你可以用你的回应中的以下内容:

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

丑陋的monkeypatching方法见编辑历史。

+0

我尝试过,但有各种错误,包括ActiveSupport没有该属性。如果有人可以给我一个初始化程序设置的适当示例,那么该属性将为我提供所需的内容。现在我只是重写每个ActiveResource模型中的to_xml – slimchrisp 2011-03-25 23:17:50

+1

检查更新后的答案以查看它是否有用。您还可以扩展您自己的ActiveResource的子类,使其更加清洁。 – 20man 2011-03-26 05:24:33

+0

+1。两条评论:1)AFAIK'render:xml => object.to_xml(:dasherize => false)'应该可以在Rails 2中工作。2)为什么当你显示的其他两种方式工作时显示黑客解决方案(最后2个片段)?不要鼓励不必要的monkeypatching。 – tokland 2013-01-16 11:28:54

相关问题