1

我需要用 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 %>

但这只是用哈希填充下拉列表,因为国家对象是哈希数组的哈希或类似的东西。我需要它以便 CountryNames 在下拉列表中,并且在用户发布表单时发送 CountryCodes。

4

1 回答 1

1

在此处查看选择表单构建器方法的文档:http: //api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

本质上,您需要这样做来构建选择的选项数组:

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

此外,您可能希望将该 xml 文件读取和解析方法从视图中取出,并将其弹出到控制器中,甚至作为类方法放入模型中。这将有助于使您的代码更易于维护,但这只是我的两分钱......

于 2012-06-26T23:09:12.990 回答