2011-03-25 11 views
6

Estoy golpeando todo tipo de paredes tratando de evitar que los rieles reemplacen guiones bajos XML con guiones. Estoy haciendo una publicación en un servicio web utilizando ActiveResource. He intentado todo tipo de variaciones de arreglos para esto, con resultados que varían desde los errores de inicialización de los rieles hasta el simple efecto. El servicio web al que estoy publicando requiere guiones bajos.Use guiones bajos en lugar de guiones con ActiveResource XML (set: dasherize en falso)

En esencia, si puedo conseguir lo siguiente en su lugar, debería ser bueno:

De 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. 

Puede alguien dar un ejemplo de esto? Desafortunadamente, estoy en una línea de tiempo ajustada, por lo que si alguien puede proporcionar asistencia que sería de gran ayuda.

Gracias!

Respuesta

13

¿Intentó establecer el atributo del módulo en falso en un inicializador?

ActiveSupport.dasherize_xml = false 

para los carriles 3+ puede utilizar lo siguiente dentro de su respuesta:

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

Ver historial de edición para la aproximación monkeypatching feo.

+0

Lo intenté, pero tuve varios errores, incluido ActiveSupport que no tenía esa propiedad. Si alguien me puede dar un ejemplo adecuado de un inicializador que establece esa propiedad que me daría lo que necesito. En este momento estoy anulando to_xml en cada modelo de ActiveResource – slimchrisp

+1

, compruebe la respuesta actualizada para ver si es de alguna utilidad. También puede extender su propia subclase de ActiveResource para hacer esto aún más limpio. – 20man

+0

+1. dos comentarios: 1) AFAIK 'render: xml => object.to_xml (: dasherize => false)' debería funcionar en Rails 2. 2) ¿Por qué mostrar la solución de pirateo (los dos últimos fragmentos) cuando las otras dos formas de mostrar funcionan? No fomente el parche innecesario. – tokland

Cuestiones relacionadas