如果Rails中存在值,则检查哈希值

时间:2013-02-05 13:10:30

标签: ruby-on-rails hash matching

我有一个哈希:

hsh = {"http://localhost:3000/sales?"=>[], "am"=>["Room Service", "Coffee Shop", "Business Center"]} 

我还有另一个变量,因为 c.value 包含“客房服务”

现在我想检查一下哈希是否存在Room Service值,我使用了它,但它显示错误。

if hsh.any? {|x| x[:am] == "#{c.value}" }

错误:

can't convert Symbol into Integer.

如何解决?

3 个答案:

答案 0 :(得分:2)

你应该试试

if hsh.any? { |key, value| value.include? c.value }

答案 1 :(得分:1)

尝试hsh.detect { |k,v| v.include? c.value }

答案 2 :(得分:0)

您可以获取“am”键并检查它是否包含您的值。

hsh.fetch("am", []).include?(c.value)

这样即使您没有“am”键,也不会出现错误。

另请注意,您的密钥是字符串。