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

时间:2016-01-20 13:55:52

标签: ruby-on-rails ruby ruby-on-rails-3

我在我的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不会在下拉列表中填充。

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

由于

1 个答案:

答案 0 :(得分:3)

您应该按键映射哈希。在您的情况下,密钥为: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"]]