我试图将记录集中的记录与字符串数组进行匹配。如果记录集返回字符串的匹配项,则排除这些记录,并且不要在select下拉列表中显示这些记录(几乎像过滤器一样)。我知道我可以使用“拒绝”从散列中删除键/值对,但我不知道如何将它与“收集”结合起来。任何帮助都是非常感谢的。
### string to compare against
ACCOUNT_NAMES = %w(aws-1 aws-2 aws-3 aws-4)
### In the controller
def aws_accounts
amazon_accounts_all = Amazonaccount.all
@amazon_accounts = amazon_accounts_all.collect {|p| [ p.name, p.id ] }
end发布于 2016-09-29 01:51:14
ActiveRecord提供了解决此问题所需的查询工具:
@amazon_accounts = Amazonaccount.where.not(name: ACCOUNT_NAMES).pluck(:id, :name)发布于 2016-09-29 00:53:13
你可以试着跟着
@amazon_accounts = amazon_accounts_all.reject{|p| %w(aws-1 aws-2 aws-3 aws-4).include? p.name}.collect {|p| [ p.name, p.id ] }发布于 2016-09-29 01:44:40
@amazon_accounts = amazon_accounts_all.collect do |p|
next if %w(aws-1 aws-2 aws-3 aws-4).include? p.name
[ p.name, p.id ]
end.compact您需要compact,因为next if行将返回该元素的nil,compact将删除数组中的所有nil元素。
https://stackoverflow.com/questions/39759486
复制相似问题