Ruby on Rails将列表转换为数组

时间:2016-04-05 06:25:31

标签: ruby-on-rails ruby

以下查询返回如下:

@cref = Creference.all
@cref = @cref.group_by{|cc| cc["name"]}

result: Object {US: Array[1], UK: Array[1]}

这些查询将结果返回为:

@countries = Product.joins(:user).distinct.where("state is not null and country <> ''").where(:users => {:merchant_status => 1}).pluck(:country)
@countries.map! {|country| country.split.map(&:capitalize).join(' ')}
@countries = @countries.uniq

result: ["US", "UK"]

我正在使用gon将结果传递到国家/地区下拉列表:

gon.search_location_list = @countries +  @cref

如何使第一个结果格式与第二个匹配?感谢!!!

3 个答案:

答案 0 :(得分:0)

在前两行之后,添加以下行:

@cref = @cref.values

答案 1 :(得分:0)

  

如何使第一个结果格式与第二个结果格式相匹配?

在您的第一个示例中,您使用group_by返回哈希。在第二个示例中,您使用map返回一个数组。两个地方使用相同的东西来获得类似的格式。

@cref = @cref.map{|cc| cc["name"]}
# ["US", "UK"]

答案 2 :(得分:0)

简而言之,您的问题是您希望使用哈希键连接数组值。因此,最简单的解决方案是

@cref = @cref.group_by{|cc| cc["name"]}.keys

这将返回数组格式的键,而不是连接。但这会产生相同的值,但你可以调用uniq()。