在下拉列表中显示辅助方法的值

Show values from helper method in drop down

我在我的 ROR 应用程序中使用哈希常量。我想显示哈希常量中的 names 以下拉。

helper.rb

PRODUCE_GROWING_METHODS  = [
    {id: 1, name: 'Conventional'},
    {id: 2, name: 'Organic'},
  ]

def produce_growing_methods
    PRODUCE_GROWING_METHODS  
  end

_produce.haml

= f.simple_fields_for :produce_details do |pd|
  = pd.input :produce_growing_method, :collection => produce_growing_methods.collect { |x| [x[0], x[1]] }, :prompt => "Select Growing Method"

我尝试了上面 _produce.haml 中所示的方法,但我得到的是空下拉列表。 Names 常量未填充在下拉列表中。

任何人都可以帮助我如何将 PRODUCE_GROWING_METHODS 哈希常量中的 names 显示到下拉列表中。

谢谢

您应该按键映射散列。在您的情况下,键是 :id:name:

produce_growing_methods.map { |x| [x[:id], x[:name]] }

实际上,使用通用解决方案总是比手动映射更好。 这是实现相同目标的更好方法,但它也适用于千哈希数组:

ary = [
  {id: 1, name: 'Conventional'},
  {id: 2, name: 'Organic'},
]
ary.map(&:values)
#=> [[1, "Conventional"], [2, "Organic"]]