在下拉列表中显示辅助方法的值
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"]]
我在我的 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"]]