2012-04-06 25 views
0

n個の引数を取るメソッドを呼び出そうとしていますが、引数はn個の引数を持つメソッドを呼び出すメソッドにハッシュとして渡されますが、ハッシュは別のパラメータのように見えます。メソッドが正しく呼び出されるように、パラメータを解除するにはどうすればよいですか?どのようにして、ハッシュをparamsに変換してルビのメソッドに送るのですか?

私が呼び出したいメソッド:この場合 method(p[:method]).call(p[:action], p[:params])
p[:method]:post
p[:action]ある:create
​​が{:my_object => {my object's params}}

ですが

いくつかのコードは、これは単なる言葉で説明するのは難しいです原因

だから、これは次のようになります。
#現在のが、何それはのようになります、これは次のようになります。
post(:create, :my_object => {my object's params})#は私が目的のメソッド呼び出しを得ることができることを method(p[:method]).call(p[:action], p[:params])は、このような変更するにはどうすればよい


を希望しましたか?

+2

は現在、所望の構成は全く同じです:あなたはparamsで1つのキーだけを持っている場合

とにかく、あなたはケースには、この醜いトリックを行うことができます – fl00r

答えて

1

実際

post(:create, {:my_object => {my object's params}}) 

post(:create, :my_object => {my object's params}) 

同じ構成です。

どちらの場合でも、メソッドpostには2つの属性、つまり記号:createとハッシュが渡されます。

method(p[:method]).call(p[:action], p[:params].keys.first => p[:params].values.first) 
関連する問題