如何使用options_from_collection_for_select helper返回不同的值?

时间:2016-10-03 12:33:58

标签: ruby-on-rails ruby select

我正在尝试使用

在select标签中返回我的产品所在国家/地区
options_from_collection_for_select()

我有一个产品型号,国家/地区是列名。我的代码看起来像这样

<%= select_tag(:country, options_from_collection_for_select(Product.all.order(:country), :id, :country), :prompt => "Alle Länder") %>

然而,它在下拉字段中不止一次给我每个国家,即每个国家出现20次。

现在我一直在尝试使用类似问题中建议的解决方案,如此

options_from_collection_for_select(Product.all.pluck('DISTINCT country'), :id, :country), :prompt => "Alle Länder") %>

然而我收到错误声明:

"undefined method `country' for "Spain":String
Did you mean?  count"

现在我无法弄清楚在这种情况下适合哪种方法。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您获得非uniq值,因为在给定国家/地区的数据库中存在的行数多于一行。

= f.select :country,
  Product.pluck(:country).uniq,
  { include_blank: 'Select country' }

如果您仍想使用select_tag

= select_tag :country,
  options_for_select(Product.pluck(:country).uniq),
  { include_blank: 'Select country' }