to_xml дает странные результаты - PullRequest
5 голосов
/ 18 января 2011

Когда я это делаю

{"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 ]

2 голосов
/ 09 мая 2011

Эта проблема закрыта с помощью запроса на объединение запросов 445: https://github.com/rails/rails/pull/445

Пробелы теперь будут разбиваться (и улучшен закрытый метод _dasherize для обработки пробелов.)

{"Нью-Йорк "=> 33} .to_xml приведет к

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

Спасибо за то, что вы подняли этот билет маяка и вопрос stackoverflow (который добавил больше информации вобсуждения);с помощью всей предоставленной информации я смог совершить первые рельсы!

0 голосов
/ 29 апреля 2011

Обычно в полях базы данных нет пробелов, поэтому ваш пример в контексте #to_xml представляет собой ситуацию с мусором.

0 голосов
/ 18 января 2011

Я тоже вижу то же самое.

Согласно документам, опция :dasherize для to_xml должна помочь.

Некоторые настройки доступны через опции. [...] Этим поведением можно управлять с помощью: only,: кроме,: skip_instruct,: skip_types,: dasherize и: camelize [...] По умолчанию дашеризуют все имена столбцов, но вы можете отключить этот параметр: dasherize в false. Установка: camelize в true верблизует все имена столбцов - это также переопределяет: 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"

Так что, может быть, кто-то может «расхвалить аномалию».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...