我正试图从一个模型构建一个散列.

这就是我想要构建的哈希类型.

{"United Sates" => "us", "United Kingdom" => "uk" .....}

我已经try 了很多方法,现在我只是在兜圈子.

以下是我的一些拙劣try .

select = Array.new
countries.each do |country|
  # select.push({country.name => country.code })
  # select[country.name][country.code]
end

h = {}

countries.each do |c|
  # h[] = {c.name => c.code}
  # h[] ||= {} 
  # h[][:name] = c.name
  # h[][:code] = c.code 
  #h[r.grouping_id][:name] = r.name
  # h[r.grouping_id][:description] = r.description
end

请给我一些建议.

非常感谢.

推荐答案

以下是一些单行 Select :

# Ruby 2.1+
name_to_code = countries.map{ |c| [c.name,c.code] }.to_h

# Ruby 1.8.7+
name_to_code = Hash[ countries.map{ |c| [c.name,c.code] } ]

# Ruby 1.8.6+
name_to_code = Hash[ *countries.map{ |c| [c.name,c.code] }.flatten ]

# Ruby 1.9+
name_to_code = {}.tap{ |h| countries.each{ |c| h[c.name] = c.code } }

# Ruby 1.9+
name_to_code = countries.to_a.each_with_object({}){ |c,h| h[c.name] = c.code }

以下是@Addicted的 comments :

# Ruby 1.8+
name_to_code = countries.inject({}){ |r,c| r.merge c.name=>c.code }

Ruby-on-rails相关问答推荐

如何在rails 7中禁用Simple_Form验证

使用FactoryBot测试ActiveStorage的RSpec请求规范

关于关联 has_many 的多级/三重嵌套形式

获取所有属于模型的嵌套对象

我如何在不在 gemfile 中的 rake 任务中要求 gem?

Rails 7,Hotwire 动态表单,更新值不起作用

BigDecimals 的总和最终成为整数 [Ruby on Rails]

如何从设计中删除/禁用注册

如何在 rails 中指定和验证枚举?

Postgres on Rails 致命:数据库不存在

rspec 共享示例与共享上下文

如何在 Rails 迁移中添加判断约束?

在 Rails/ActiveRecord 列名中使用问号字符

Rails 4 pgsql add_index 类型为 GIN 或 GiST

参数错误:范围主体需要可调用

我是否必须手动卸载所有依赖的 gem?

如何翻译 ActiveRecord 模型类名称?

您将如何解析 Ruby 中的 url 以获取主域?

如何检测rails是否在根url?

如何删除删除选项表单 activeAdmin?