ruby on rails 在关联调用中使用变量
Posted
技术标签:
【中文标题】ruby on rails 在关联调用中使用变量【英文标题】:ruby on rails use variable in association call 【发布时间】:2012-09-21 15:08:17 【问题描述】:我有一个辅助函数,它呈现一个部分,我将一个名为方法的变量传递到视图中......
在视野中我使用
<%= friend.method.profile.picture %>
方法变量可以是user或friend
我得到了
wrong number of arguments(0 for 1)
我想我如何使用传递给关联调用的变量存在问题...也许我必须以某种方式对其进行转义?
【问题讨论】:
【参考方案1】:如果我理解您想要什么,您将尝试根据名为“方法”的字符串参数的值动态调用函数。此外,'method' 是 Ruby 中的一个现有函数(因此您的错误消息是关于 'wrong number of args' vs 'undefined method'),所以我建议在您的代码中重命名它。
TLDR:
将变量重命名为“person”(而不是“method”),然后
尝试一些元编程来使用 send 调用函数:
friend.send(person).profile.picture
【讨论】:
【参考方案2】:这里的答案与 ~AmirRubin 相同,但更加充实。
我假设朋友是对象,方法是助手,.profile 是您希望助手使用的方法。
将你的助手定义为:
def call_method(object, method_name)
object.send(method_name)
end
在你看来,称之为:
<%= call_method(friend, :profile).picture %>
如果我的假设是错误的,请调整它。如果您需要将方法名称(符号)发送到局部,请在本地传递它。
【讨论】:
以上是关于ruby on rails 在关联调用中使用变量的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails: :include 与子模型的多态关联
带有 jquery datepicker 的 Ruby on rails