2014-02-27 70 views
0

值考虑下面的代码:测试在哈希

params = {:async => true, :contact_id => "101"} 
puts "async is #{params['async']}" 

if params['async'] == true 
    puts "Do async stuff" 
    # TODO Launch background task 
    return [204, {}, ['']] 
end 

为什么我从来没有得到过线"Do async stuff"当我看到输出"async is true"

+0

是的,班级是字符串。谢谢! –

+0

我按照你的帖子回答。如果有''true'',则写为'params [:async] =='true''。 –

回答

5

写为params[:async]。您的密钥:asyncSymbol,而不是String

下面是修改后的代码:

if params[:async] == true 
    puts "Do async stuff" 
    # TODO Launch background task 
    return [204, {}, ['']] 
end 
+1

“但是为什么在Ruby on Rails中我可以交替使用params [:id]和params ['id']?” http://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html –

+0

'在整个书写界面中将内部符号映射为字符串时,您可以从链接中看到这一点。 –

3

。在你的params哈希没有钥匙'async',因此它将返回nil这不等于true。有密钥:async在你的散列,但你没有要求那个密钥。

+0

谢谢,我也应该在我的回答中提到它。但你做了+1 –