我需要用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 %>
但这只会用哈希填充下拉列表,因为 country 对象是哈希数组的哈希或类似的东西。我需要它,以便国家/地区名称在下拉列表中,并在用户发布表单时发送国家/地区代码。
在此处查看选择表单构建器方法的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select
本质上,您需要这样做来构建选择的选项数组:
countries["Countries"]["Country"].collect { |c| [c['CountryCode'], c['CountryName'] }
此外,您可能希望将该 xml 文件读取和分析方法从视图中取出,并将其弹出到控制器中,甚至作为类方法弹出到模型中。这将有助于保持您的代码更易于维护,但这只是我的两分钱......