在 Ruby on Rails 中使用 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 %>

但这只会用哈希填充下拉列表,因为 country 对象是哈希数组的哈希或类似的东西。我需要它,以便国家/地区名称在下拉列表中,并在用户发布表单时发送国家/地区代码。

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

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

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

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

最新更新