ruby-on-rails - 在下拉列表中显示辅助方法的值

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

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

helper.rb

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

def produce_growing_methods
    PRODUCE_GROWING_METHODS  
  end

_product.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"

我按照上面的 _product.haml 进行了尝试,但我得到的是空的下拉菜单。常量中的名称不会填充在下拉列表中。

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

谢谢

最佳答案

您应该通过键映射哈希。在您的情况下,键是 :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"]]

关于ruby-on-rails - 在下拉列表中显示辅助方法的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34901997/

相关文章:

ruby-on-rails - 在 Rails 中通过 hidden_​​field_tag 传递数组

mysql - Rails has_and_belongs_to 与主键删除销毁时的所有记录

ruby - 在 OS X 10.9 中使用带有静态链接 ruby​​ 的 bundler

ruby - 如果仅输入零,则从字符串中删除多个零

mysql - 更新到 mysql 8 安装后 mysql gem 出现问题

ruby-on-rails - ruby 正则表达式 - 如何搜索一个词但如果另一个词存在则不搜索(在 url/uri 中)。?

javascript - Rails Bootstrap Active 类(带排序)

ruby-on-rails - Ruby on Rails 错误 bundler

ruby-on-rails - 在 ruby​​ on Rails 中销毁客户/订单

ruby-on-rails-3 - 尝试使用 AWS gem 删除文件