2011-01-18 15 views
5

Cuando hago esoto_xml dar resultados extraños

{"New York"=>33, :Versailles => 3231}.to_xml 

me sale

<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<hash> 
    <Versailles type=\"integer\">3231</Versailles> 
    <New York type=\"integer\">33</New York> 
</hash> 

lo que habría esperado rieles a dasherize "Nueva York", no?

Respuesta

2

Este tema está cerrado a través de la fusión de solicitud de extracción 445: https://github.com/rails/rails/pull/445

serán ahora dasherized

Espacios (. Y el método _dasherize privada se ha mejorado para manejar espacios)

{ "Nueva York" => 33} .to_xml resultará en

..<New-York type=\"integer\">33</New-York>..

Gracias por poner este l ticket de faro & la pregunta de stackoverflow (que agregó más información en las discusiones); ¡Con la ayuda de toda la información provista, pude hacer que mis primeros rieles se comprometieran!

0

Estoy viendo lo mismo también.

Según los documentos la opción :dasherize a to_xml debería hacer el truco.

Algunas configuraciones están disponibles a través de las opciones. [...] Este comportamiento se puede controlar con: only,: except,: skip_instruct,: skip_types,: dasherize y: camelize [...] El valor predeterminado es dasherize todos los nombres de columna, pero puede deshabilitar esta configuración : dasherize a falso. Configuración: camelize to true camelize todos los nombres de columna; esto también anula: dasherize.

Por lo tanto, parece que, como mínimo:

asdf.to_xml(:dasherize => true) 

debe hacerlo, y añadiendo la opción :camelize debe forzarlo.

=> "<?xml version="1.0" encoding="UTF-8"?>\n<Hash>\n <New York type="integer">33</New York>\n <Versailles type="integer">3231</Versailles>\n</Hash>\n" 

Así que, tal vez alguien pueda 'explicar la anomolia.

+0

El problema es que dasherize está cambiando el subrayado al guión, no el espacio para lanzar. Lo mismo para camelize: "New_York is great" .camelize = "NewYork is great". Sin embargo, to_xml no debería decepcionarnos con un xml de formato incorrecto. – standup75

+0

Acerca de dasherize y espacio, ¡Buen punto! ¡Duh !, y, sí, to_xml debería generar XML válido o generar una excepción o al menos tener una forma de notificarnos el problema. –

0

Normalmente, los campos de la base de datos no tienen espacios en ellos, por lo que su ejemplo en el contexto de #to_xml es una situación de eliminación de basura en la basura.

Cuestiones relacionadas