我有一个辅助函数,它呈现一个部分,我将一个名为方法的变量传递到视图中......
当我在视图中使用
<%= friend.method.profile.picture %>
方法变量可以是用户或朋友
我明白了
wrong number of arguments(0 for 1)
我想我如何使用传递给关联调用的变量存在问题......也许我必须以某种方式逃避它?
我有一个辅助函数,它呈现一个部分,我将一个名为方法的变量传递到视图中......
当我在视图中使用
<%= friend.method.profile.picture %>
方法变量可以是用户或朋友
我明白了
wrong number of arguments(0 for 1)
我想我如何使用传递给关联调用的变量存在问题......也许我必须以某种方式逃避它?
如果我了解您想要什么,您将尝试根据称为“方法”的字符串参数的值动态调用一个函数。此外,'method' 是 Ruby 中的一个现有函数(因此您的错误消息是关于 'wrong number of args' vs 'undefined method'),所以我建议在你的代码中重命名它。
TLDR:
将变量重命名为“人”(而不是“方法”),然后
尝试一些元编程来使用发送调用函数:
friend.send(person).profile.picture
这是与 ~AmirRubin 相同的答案,但更加充实。
我假设朋友是对象,方法是助手,.profile 是您希望助手使用的方法。
将您的助手定义为:
def call_method(object, method_name)
object.send(method_name)
end
在您看来,将其称为:
<%= call_method(friend, :profile).picture %>
如果我的假设是错误的,请调整它。如果您需要将方法名称(符号)发送到局部,请在本地传递它。