2014-02-27 66 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 –