我有一个名为 link_to_admin
的方法然后我给另一个方法取了别名 simple_link_to
def link_to_admin(name,url,options={})
# My stuff here
link_to(name,url,options)
end
alias_method :simple_link_to, :link_to_admin
如果我调用 link_to_admin
,我会遇到一个问题,我想将值打印到 <li>
标记
例如
def link_to_admin(name,url,options={})
# My stuff here
menu = ""
menu << "<li> #{link_to(name,url,options)}</li>"
menu.html_safe
end
如果我调用 simple_link_to
不需要 <li>
标签。所以目前我正在通过一个 options
喜欢li_required
然后在我的方法中检查条件。这工作得很好,我知道这是正确的方法。
def link_to_admin(name,url,options={})
menu = ""
menu << options[:li_required] ? "<li> #{link_to(name,url,options)}</li>" : link_to(name,url,options)
menu.html_safe
end
但是,在我试图找到类似 simple_method
的调用方法之前或 link_to_admin
,所以我尝试了:
1.__method__
2.caller[0]=~/`(.*?)'/
这没有按预期工作。
我调用 simple_method
或 link_to_admin
layout
中的方法所以__method__
总是返回 link_to_admin
仅。
但是caller[0]=~/
(.*?)'/if am calling from
布局 means, it's returning layout path and if I am calling from any other
助手 or
class` 表示它正在返回当前方法。
是否有任何其他方法可以检查方法名称。
我知道这不是一个好问题,有没有人可以用其他方式告诉我。
注意:- 我创建的 alias_method 仅用于命名转换。除了添加 <li>
标记我什么都没做。
不仅在这里我很久以前就有这种怀疑。我知道我可以再定义一种方法,而且我可以做到。
离开我的场景,一般我都想知道这个答案。
最佳答案
使用 __callee__
而不是 __method__
将获取正在运行的别名的名称。
关于ruby-on-rails - 如何获取调用别名方法的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23806577/