有没有办法从控制器的方法中读取(扫描)所有实例变量?
例如:
我将在控制器中定义一些实例变量,索引或显示或自定义方法。我想从一个地方知道(获取)所有实例变量值。
class TestClass
def t1
@v1 = "test"
end
def t2
@v2 = "test1"
end
end
TestClass.instance_variables
=> []
tc = TestClass.new
tc.t1
tc.instance_variable_names
=> ["@v1"]
以上代码适用于具有自定义方法的类,而不是默认方法(索引,显示等)。
Rails.env
=> "development"
u = UsersController.new
=> #<UsersController:0x00000004233990 @_routes=nil, @_action_has_layout=true, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil>
1.9.3p448 :109 > u.index
NoMethodError: undefined method `env' for nil:NilClass
答案 0 :(得分:1)
调用instance_variables()方法。
instance_variable_names()
# File activesupport/lib/active_support/core_ext/object/instance_variables.rb, line 27
def instance_variable_names
instance_variables.map { |var| var.to_s }
end
答案 1 :(得分:0)
最简单的方法可能是这样的:
a = TestClass.new
after_init = a.instance_variables
a.t1
after_t1 = after_init - a.instance_variables