2011-06-05 83 views
0

我有此數組:查詢對象不存在

--- !map:ActiveSupport::HashWithIndifferentAccess 
search: !map:ActiveSupport::HashWithIndifferentAccess 
    address: test 

我申請以下它:

address = params['search']['address'] 
if address 
    # do something 
end 

如果沒有搜索對象,也沒有地址對象,代碼產生了一個錯誤:

You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.[]

在ruby中處理類似的東西的方式是什麼?

+0

作爲JITS所指出的,你可能有一個數組。在ruby中評論不是'//',它是'#'。我修好了它。 – sawa 2011-06-05 22:15:33

+0

謝謝sawa。 – choise 2011-06-06 08:38:02

回答

2

首先...

[...] for example i have this array:

只是爲了澄清,它實際上是一個專門Hash

其次...

你可以做這樣的事情:

if params[:search] and params[:search][:address] 
    # do something with address 
else 
    # no value given 
end 
+0

謝謝,你是對的。爲什麼'params ['search'] ['address']'爲散列工作? – choise 2011-06-06 08:39:00

+0

@choise,它是一種特殊的散列,可以將字符串或符號作爲關鍵字並將其視爲相同。 – Jits 2011-06-06 08:58:12