【问题标题】:populate drop down list from array in ruby从ruby中的数组填充下拉列表
【发布时间】:2016-06-15 19:31:31
【问题描述】:

我有一个已调用的国家/地区列表 - 并已解析为以下格式:

{"Countries"=>[{"Name"=>"ABKHAZIA", "IsoCode"=>"AB", "HasTown"=>"I"}, {"Name"=>"ANGUILLA", "IsoCode"=>"AI", "HasTown"=>"I"}, {"Name"=>"ANTIGUA", "IsoCode"=>"AG", "HasTown"=>"I"}, .... {"Name"=>"ZIMBABWE", "IsoCode"=>"ZW", "HasTown"=>"I"}]}

我想用这些数据填充一个下拉列表。我用来创建下拉框的代码是:

def country_selection_input options = {}
options.reverse_merge!(
  :attribute => :country_iso,
  :collection => transaction_form.get_countries,
  :input_html => {},
  :prompt => 'please select',
  :label => 'To Where'
)

这给了我一个下拉框,其中包含一个请选择提示和一个仅包含一个单词的列表:国家。

数据在那里 - 但我不知道如何将其放入下拉列表 - 我确信我错过了一些简单的东西。 我试过了

:label_method => :Name,

但得到一个错误信息

undefined method `Name' for #<Array:0x007fc385cecbb0>

这可能会变成一个菜单,因为我想根据所选国家/地区采取行动 - 但是 - 这是第一步 - 让列表起作用。

【问题讨论】:

  • 能否提供所需下拉框的示例?您希望那里有哪些价值观?谢谢。

标签: ruby-on-rails arrays ruby json drop-down-menu


【解决方案1】:

答案是

def country_selection_input options = {}
countries = transaction_form.get_countries()[:Countries]
options.reverse_merge!(
  :attribute => :country_iso,
  :collection => countries,
  :label_method => :Name,
  :value_method => :IsoCode,
  :input_html => {},
  :prompt => 'please select',
  :label => 'To Where'
)

call_input_from_args_hash options

结束

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 2011-03-30
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2022-01-11
    • 2021-04-04
    相关资源
    最近更新 更多