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

标签 ruby-on-rails ruby ruby-on-rails-4 ruby-2.0 ruby-2.1

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

相关文章:

ruby-on-rails - 生产中的 MongoDB 和 Mongoid

ruby-on-rails - Rails json 输出载波缩略图版本

ruby-on-rails - 如何从 Rails 4 中的表单发送哈希数组

ruby-on-rails - Rails 模板中的 Ruby 枚举器

ruby - 这个结构在 Ruby 中是什么意思?

ruby-on-rails - 将电子邮件发送到多个逗号分隔的电子邮件地址

ruby-on-rails - Rails has_many 带有别名

css - 更改为引导下拉菜单透明背景色

ruby-on-rails - 在 Bootstrap 菜单中设置当前事件选项卡

ruby-on-rails - 如何查询双belongs_to关联