2012-06-26 2 views
1

Мне нужно заполнить выпадающий список в рубине на рельсах с данными в XML-документе.заполнение выпадающего списка с данными xml в ruby ​​on rails

Документ XML форматируется следующим образом:

<Countries> 
    <Country> 
     <CountryCode>US</CountryCode> 
     <CountryName>United States</CountryName> 
    </Country> 
    ... 
</Countries> 

Затем я попытался преобразовать в хэш с помощью этого кода:

<% countries_xml = File.read(".../countries.xml") %> 
<% countries = Hash.from_xml(countries_xml) %> 

И я получил хэш так:

{"Countries"=>{"Country"=>[{"CountryCode"=>"US", "CountryName"=>"United States"}, ... ]}} 

И я пытаюсь использовать этот хэш, чтобы заполнить выпадающий список, но я думаю, что застрял. Я пробовал так:

<% user.select :country, countries["Countries"]["Country"].each %> 

Но это просто заполняет DropDownList с хэшей, поскольку страны объект является хэш-массива хэшей или что-то в этом роде. Мне нужно, чтобы имена CountryNames находились в выпадающем списке, а CountryCodes отправляются, когда пользователь отправляет форму.

ответ

0

Посмотрите документацию для выбора метода формы строитель здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

По сути вы должны сделать это, чтобы построить массив опций для выбора:

countries["Countries"]["Country"].collect { |c| [c['CountryCode'], c['CountryName'] } 

Кроме того, вам Вероятно, вы захотите перенести эти методы чтения и анализа XML-файлов из представления и вставить его в контроллер или даже в модель как метод класса. Это поможет сохранить код более удобным, но это всего лишь мои два цента ...

+0

Большое спасибо! Теперь он отлично работает. –

Смежные вопросы