如何基于params [:controller]动态访问实例变量?

时间:2011-12-07 12:08:39

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

我有一个部分应该根据params[:controller]变量访问各种控制器的实例变量。使用singularizedowncase,我定义了实例变量的名称,按惯例,它是控制器名称的单数。

但我只得到String。如何调用名为string?

的实例变量

例如,我有控制器Articles,所以我执行以下操作:

params[:controller].singularize.downcase # => "article"

现在我想访问@article。我怎么能这样做?

1 个答案:

答案 0 :(得分:11)

ruby​​中有一个instance_variable_get()方法。所以尝试这样的事情:

var_name = params[:controller].singularize.downcase # article
instance_variable_get("@#{var_name}")

P.S:请记住,您应该在适当的背景下使用instance_variable_get