Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 仅当找到匹配项时才显示选择项_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 仅当找到匹配项时才显示选择项

Ruby on rails 仅当找到匹配项时才显示选择项,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在尝试将记录集中的记录与字符串数组进行匹配。如果记录集返回与字符串匹配的结果,则排除这些记录,并且不在“选择”下拉列表中显示它们(类似于过滤器)。我知道我可能会使用“拒绝”从散列中删除键/值对,但我不知道如何将其与“收集”结合起来。感谢您的帮助 ### string to compare against ACCOUNT_NAMES = %w(aws-1 aws-2 aws-3 aws-4) ### In the controller def aws_accounts amazon_a

我正在尝试将记录集中的记录与字符串数组进行匹配。如果记录集返回与字符串匹配的结果,则排除这些记录,并且不在“选择”下拉列表中显示它们(类似于过滤器)。我知道我可能会使用“拒绝”从散列中删除键/值对,但我不知道如何将其与“收集”结合起来。感谢您的帮助

### 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
你可以试试下面的

@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 ] }
你可以试试下面的

@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 ] }
您需要
compact
,因为
next if
行将返回该元素的
nil
compact
将删除数组中的所有
nil
元素


您需要
compact
,因为
next if
行将返回该元素的
nil
compact
将删除数组中的所有
nil
元素

ActiveRecord提供了必要的查询工具来解决此问题:

@amazon_accounts = Amazonaccount.where.not(name: ACCOUNT_NAMES).pluck(:id, :name)

ActiveRecord提供了必要的查询工具来解决此问题:

@amazon_accounts = Amazonaccount.where.not(name: ACCOUNT_NAMES).pluck(:id, :name)

我还没有真正尝试过任何东西。我正在试图找出如果发现字符串匹配,如何排除记录集中的项。在stack overflow中,我们希望人们自己尝试一下,当您尝试并遇到错误时来找我们。。。这表明你自己也付出了一些努力:)试试看,看看你能想出什么——这是最好的学习方法。没有试过就寻求帮助意味着你在为自己服务,因为下一次你遇到问题时,你仍然不知道如何尝试解决问题……很公平。:-)我还没有真正尝试过任何东西。我正在试图找出如果发现字符串匹配,如何排除记录集中的项。在stack overflow中,我们希望人们自己尝试一下,当您尝试并遇到错误时来找我们。。。这表明你自己也付出了一些努力:)试试看,看看你能想出什么——这是最好的学习方法。在没有尝试的情况下寻求帮助意味着你在为自己服务,因为下次你遇到问题时,你仍然不知道如何去解决一个问题……很公平。:-)谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。谢谢你的意见。