2017-08-23 5 views
1

間のパスオプションパラメータpublic_methodた場合に呼び出されます:ルビー:メソッド

public_method hello: 'world' 

def public_method options = {} 
    puts options[:hello] 
    private_method options: options 
end 

private 

def private_method options = {} 
    puts options[:hello] 
end 

それは'worldを置き、前方private_methodに。 このメソッドは、期待通りの{:options=>{:hello=>'world'}}を受け取りません。代わりに{:options=>{:options=>{:hello=>'world'}}}を受信します。

どのようにこの動作を変更できますか? public_method

+0

「どうすればこの動作を変更できますか?」 - ラッピングはしないでください。 'private_method options' –

+1

' private_method options'を試してください – Abhi

+1

'private_method options:options'は' private_method({options:options}) 'を意味します。 – Stefan

答えて

3

optionsはすでにハッシュです。 private_methodに電話すると、別のハッシュに埋め込みます。それをしないでください。

def public_method options = {} 
    puts options[:hello] 
    private_method options 
end