list Rails控制器实例变量

时间:2011-05-19 16:02:12

标签: ruby ruby-on-rails-3 metaprogramming

我试图在控制器中列出实例变量,但想出了

irb>HomeController.instance_variable_names
=> ["@visible_actions", "@inheritable_attributes", "@controller_path", "@action_methods", "@_process_action_callbacks"]

我尝试了这个动作

irb>HomeController.action("index").instance_variable_names
=> []

那么控制器实例变量属于什么?

2 个答案:

答案 0 :(得分:11)

实例变量属于实例化的控制器对象,仅在执行操作方法时创建。试试这个:

irb>instantiated_controller = HomeController.new
irb>instantiated_controller.index
irb>instantiated_controller.instance_variable_names
=> ["@_status", "@_headers", ...

答案 1 :(得分:1)

您还可以直接从控制器代码中调用self.instance_variable_names,然后在日志中查看它们。

class ProfilesController < ApplicationController
  ...
  def update
    logger.info("List of instance vars: #{self.instance_variable_names}")
    ...
  end
end