to_xml给出了奇怪的结果

时间:2011-01-18 00:15:32

标签: ruby-on-rails xml

当我这样做时

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

我得到了

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

我原本希望铁轨能够将“纽约”变为“纽约”,不是吗?

3 个答案:

答案 0 :(得分:2)

此问题已通过合并拉取请求445关闭:https://github.com/rails/rails/pull/445

空格现在将被破译(并且私有_dasherize方法被增强以处理空格。)

{“New York”=&gt; 33} .to_xml将导致

  

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

感谢您提供此灯塔票和stackoverflow问题(在讨论中添加了更多信息);在所提供的所有信息的帮助下,我能够让我的第一个rails提交!

答案 1 :(得分:0)

我也看到了同样的事情。

根据文档,:dasherize的{​​{1}}选项应该可以解决问题。

  

某些配置可通过选项获得。 [...]   此行为可以通过以下方式控制:only,:except,:skip_instruct,:skip_types,:dasherize和:camelize [...]   默认设置是对所有列名称进行dasherize,但您可以禁用此设置:dasherize为false。设置:camelize为true将驼峰所有列名称 - 这也会覆盖:dasherize。

所以,它看起来至少是:

to_xml

应该这样做,添加asdf.to_xml(:dasherize => true) 选项应该强制它。

:camelize

所以,也许有人可以'摒弃这种异象。

答案 2 :(得分:0)

通常情况下,数据库字段中没有空格,因此#to_xml上下文中的示例是垃圾乱码情况。