在当前范围内找不到变量?

时间:2013-02-16 14:05:09

标签: ruby erb

尝试将跟踪输出添加到ERB模板时,在尝试查找变量ex_title的来源时,我遇到了以下问题。

尝试列出当前范围内的所有可能变量,但在那里 根本不存在:

<%= instance_variables.grep(/ex_title/) %>  # renders an empty array
<%= global_variables.grep(/ex_title/) %>    # renders an empty array
<%= local_variables.grep(/ex_title/) %>     # renders an empty array

<%= instance_variables.sort %>   # renders array with many elements
<%= global_variables.sort %>     # renders array with many elements
<%= local_variables.sort %>      # renders array with many elements

尽管ex_title变量确实存在:

<%= ex_title %>                  # renders "Categories - Online store"
<%= ex_title.class %>            # renders "String"
<%= ex_title.object_id %>        # renders "15825900"

如果不在全局变量,本地变量或实例变量中,还能找到其他地方吗?

1 个答案:

答案 0 :(得分:0)

然后你必须得出结论,这是一种方法。使用defined?确定ex_title是什么。例如:

defined? ex_title  #=> nil

def ex_title; end
defined? ex_title  #=> "method"

ex_title = Object.new
defined? ex_title  #=> "local-variable"