gpt4 book ai didi

ruby-on-rails - 如何获取调用别名方法的名称?

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:08 26 4
gpt4 key购买 nike

我有一个名为 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_methodlink_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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com