2

パーシャルをレンダリングするヘルパー関数があり、メソッドと呼ばれる変数をビューに渡します...

ビューで私が使用するとき

<%= friend.method.profile.picture %>

メソッド変数はユーザーまたはフレンドのいずれかです

そして私は得る

wrong number of arguments(0 for 1)

アソシエーション呼び出しに渡される変数の使用方法に問題があると思います...おそらく、どうにかしてそれをエスケープする必要がありますか?

4

2 に答える 2

4

あなたが何を望んでいるのか理解できれば、「メソッド」と呼ばれる文字列引数の値に基づいて関数を動的に呼び出そうとしています。また、「メソッド」は Ruby の既存の関数です (したがって、「間違った数の引数」と「未定義のメソッド」に関するエラー メッセージ)。そのため、コード内で名前を変更することをお勧めします。

TLDR:

  1. 変数の名前を「 person 」のように変更します(「method」ではなく)。

  2. send を使用して関数を呼び出すメタプログラミングを試してください。

    friend.send(person).profile.picture

于 2012-09-21T15:12:59.323 に答える
0

これは ~AmirRubin と同じ回答ですが、より具体化されています。

フレンドがオブジェクト、メソッドがヘルパー、.profile がヘルパーで使用するメソッドであると想定しています。

ヘルパーを次のように定義します。

def call_method(object, method_name)
  object.send(method_name)
end

あなたの見解では、次のように呼び出します。

<%= call_method(friend, :profile).picture %>

私の仮定が間違っている場合は、これを調整してください。メソッド名 (シンボル) を部分パスに送信する必要がある場合は、ローカルで渡します。

于 2012-09-21T15:28:21.603 に答える