2016-08-22 28 views
0

我已經創建了一個自定義的方法,並試圖通過一個可選的散列將值傳遞給它。爲什麼值傳遞給可選散列`nil`中的方法? (Ruby)

但是,錯誤消息告訴我,該方法實際上並沒有收到我傳遞的值,因此nil

查看:

<%= f.custom_form :height, { item: ‘weight’} %> 

方法:

def custom_form(type, additional_items = {}) 
    class_array = [‘form_control’] 

    if additional_items 
    class_array << additional_items[:item] 
    end 
end 

錯誤:

no implicit conversion of nil into String

但我不知道這是爲什麼發生。

如果這是一個新手問題,請提前道歉。

+0

請編輯包含'form_control'的引號。你可以向我們展示'class',其中聲明瞭'custom_form'嗎? –

+0

您的示例使用反引號代替單引號。這只是一個抄錄錯字嗎? – coreyward

+0

注意:您的'custom_form'方法返回'nil'或數組,取決於爲'additional_items'傳遞的值。 – coreyward

回答

1

這條線是模糊的

<%= f.custom_form :height, { item: ‘weight’} %> 

,因爲它可以被解釋爲一個參數和塊

嘗試使用明確的括號,你不需要哈希牙套,他們將承擔

<%= f.custom_form(:height, item: ‘weight’) %> 
+0

至少在最近的Ruby版本中情況並非如此。如果這是問題,OP會得到語法錯誤,而不是他看到的例外。 – coreyward

相關問題