【问题标题】:populating a dropdownlist with xml data in ruby on rails在 ruby​​ on rails 中使用 xml 数据填充下拉列表
【发布时间】:2012-06-28 08:23:11
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby xml drop-down-menu hash


    【解决方案1】:

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

    基本上你需要这样做来构建选择的选项数组:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多