我有一个方法,假设迭代一个数组并将任何项匹配到我的模型中的字符串。我的方法看起来像这样
@new_array = @old_array.find_all { |t| t.fetch('name') == "self.object_name" }
此方法应该通过我拥有的哈希数组查找并匹配与object_name同名的任何项目。当我在控制台中测试与object_name的名称比较时,它显示为true,但是当我运行上述完整方法时,它没有显示找到的对象,但是我知道该数组包含多个具有完全相同名称的对象。什么意思错了?
阵列看起来像......
old_array = {"id"=>"123", "account"=>"456", "name"=>"CITY"},
{"id"=>"456", "account"=>"567", "name"=>"CITY DIR DEP"},
{"id"=>"456", "account"=>"567", "name"=>"BUCK"},
{"id"=>"456", "account"=>"567", "name"=>"CITY DIR DEP"},
{"id"=>"456", "account"=>"567", "name"=>"HAPPY"},
{"id"=>"456", "account"=>"567", "name"=>"CIRCLE"}
并且对象在控制台中打印出来
self.object_name => "CITY DIR DEP"
答案 0 :(得分:2)
您根本不需要引号"
(您确实试图将检索到的name
与字符串"self.object_name"
进行比较,而不是self.object_name
的值):
@new_array = @old_array.find_all { |t| t.fetch('name') == self.object_name }
如果您是粉丝,可以使用"#{}"
进行插值:
@new_array = @old_array.find_all { |t| t.fetch('name') == "#{self.object_name}" }
答案 1 :(得分:1)
试试这个:
@new_array = @old_array.find_all { |t| t['name'] == self.object_name }