我正在调用方法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>
tag
Ex.
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
like 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
or link_to_admin
,所以我尝试了:
1.__method__
2.caller[0]=~/`(.*?)'/
这没有按预期工作。
我正在打电话simple_method
or link_to_admin
中的方法layout
so __method__
总是会回来link_to_admin
only.
But caller[0]=~/
(.*?)'/if am calling from
layoutmeans, it's returning layout path and if I am calling from any other
helperor
class` 意味着它返回当前方法。
还有其他方法可以检查方法名称。
我知道这不是一个好问题,有人可以告诉我其他方式吗?
注意:- 我创建了 alias_method 仅用于命名转换。除了添加之外<li>
标记我没有做任何事情。
不只是这里,我很久以前就有这样的疑问。我知道我可以再定义一种方法并且我可以做到。
留下我的场景,一般我都想知道这个答案。