2

我有一个辅助函数,它呈现一个部分,我将一个名为方法的变量传递到视图中......

当我在视图中使用

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

方法变量可以是用户朋友

我明白了

wrong number of arguments(0 for 1)

我想我如何使用传递给关联调用的变量存在问题......也许我必须以某种方式逃避它?

4

2 回答 2

4

如果我了解您想要什么,您将尝试根据称为“方法”的字符串参数的值动态调用一个函数。此外,'method' 是 Ruby 中的一个现有函数(因此您的错误消息是关于 'wrong number of args' vs 'undefined method'),所以我建议在你的代码中重命名它。

TLDR:

  1. 将变量重命名为“”(而不是“方法”),然后

  2. 尝试一些元编程来使用发送调用函数:

    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 回答