我可以使用rails迭代控制器的每个实例变量吗?

时间:2012-10-18 16:08:04

标签: ruby ruby-on-rails-3

如何在控制器中循环遍历每个实例变量“@anything”?我不想循环一个,我想把它们作为一个集合循环。理想的范围是我的控制器方法定义的那些。

1 个答案:

答案 0 :(得分:2)

您可以使用instance_variablesinstance_variable_get,例如像这样:

@foo = 'Foo'
@bar = 'Bar'

instance_variables # => [:@foo, :@bar]

instance_variables.map(&method(:instance_variable_get))
# => ['Foo, 'Bar']
  

理想地限定我的控制器方法定义的那些。

实例变量的范围是实例,而不是方法。这就是为什么它们被称为实例变量。并且它们不是由方法定义的,事实上,它们根本没有定义:它们只是在它们第一次被分配时才会存在。