Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用xml生成奇怪的结果_Ruby On Rails_Xml - Fatal编程技术网

Ruby on rails 使用xml生成奇怪的结果

Ruby on rails 使用xml生成奇怪的结果,ruby-on-rails,xml,Ruby On Rails,Xml,当我这么做的时候 {"New York"=>33, :Versailles => 3231}.to_xml 我明白了 3231 33 我本以为rails会将“纽约”dasherize,不是吗?我也看到了同样的事情 根据文档,将:dasherize选项设置为to_xml应该可以实现这一功能 某些配置通过选项提供。[...] 此行为可以通过:only、:except、:skip_instruction、:skip_types、:dasherize和:camellize[…]进行控制

当我这么做的时候

{"New York"=>33, :Versailles => 3231}.to_xml
我明白了


3231
33

我本以为rails会将“纽约”dasherize,不是吗?

我也看到了同样的事情

根据文档,将
:dasherize
选项设置为
to_xml
应该可以实现这一功能

某些配置通过选项提供。[...] 此行为可以通过:only、:except、:skip_instruction、:skip_types、:dasherize和:camellize[…]进行控制 默认设置是对所有列名进行dasherize,但可以禁用此设置:dasherize为false。将:camelize设置为true将对所有列名进行camelize-这也会覆盖:dasherize

因此,至少看起来:

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

=> "<?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"
=>“\n\n 33\n 3231\n\n”

因此,可能有人无法释放异常。

通常数据库字段中没有空格,因此您在#to_xml上下文中的示例是一个垃圾回收的情况。

此问题通过合并拉取请求445解决:

现在将对空间进行dasherize(并且private _dasherize方法被增强以处理空间)

{“newyork”=>33}。to_xml将导致

.33..


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

问题是dasherize正在将下划线更改为破折号,而不是将空格更改为破折号。camelize也一样:“纽约很好”。camelize=“纽约很好”。尽管如此,to_xml不应该因为格式错误的xmlAbout dasherize和space而让我们失望,这一点很好!嗯!,是的,to_xml应该呈现有效的xml或引发异常,或者至少有办法通知我们问题。
=> "<?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"