首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在找到匹配时才显示选择项

只有在找到匹配时才显示选择项
EN

Stack Overflow用户
提问于 2016-09-29 00:18:22
回答 3查看 57关注 0票数 0

我试图将记录集中的记录与字符串数组进行匹配。如果记录集返回字符串的匹配项,则排除这些记录,并且不要在select下拉列表中显示这些记录(几乎像过滤器一样)。我知道我可以使用“拒绝”从散列中删除键/值对,但我不知道如何将它与“收集”结合起来。任何帮助都是非常感谢的。

代码语言:javascript
复制
### 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-29 01:51:14

ActiveRecord提供了解决此问题所需的查询工具:

代码语言:javascript
复制
@amazon_accounts = Amazonaccount.where.not(name: ACCOUNT_NAMES).pluck(:id, :name)
票数 3
EN

Stack Overflow用户

发布于 2016-09-29 00:53:13

你可以试着跟着

代码语言:javascript
复制
@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 ] }
票数 2
EN

Stack Overflow用户

发布于 2016-09-29 01:44:40

代码语言:javascript
复制
@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行将返回该元素的nilcompact将删除数组中的所有nil元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39759486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档