我在我的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
到下拉列表。
由于
答案 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"]]