2016-08-22 8 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」を囲む引用符を編集してください。 'custom_form'が宣言されている' class'を見せてもらえますか? –

+0

あなたの例では、一重引用符ではなくバッククォートを使用しています。これはちょうど転写の誤植ですか? – coreyward

+0

注: 'custom_form'メソッドは、' additional_items'に渡される値に応じて、 'nil'か配列を返します。 – coreyward

答えて

1

それは一つの引数とブロック

として解釈することができるので、この行は、明示的な括弧を使用してみてください、あなたは彼らが想定されます、ハッシュの中括弧を必要としない

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

あいまいです

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

少なくとも最近のバージョンのRubyではそうではありません。これが問題だった場合、OPには構文エラーが表示されますが、例外は表示されません。 – coreyward

関連する問題