从ruby中的数组填充下拉列表

时间:2016-06-15 19:31:32

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

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

{"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>

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

1 个答案:

答案 0 :(得分: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