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