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

dav*_*idb 4 ruby ruby-on-rails ruby-on-rails-3

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

但我只得到一个String.如何调用名为string的实例变量?

例如,我有控制器Articles,所以我做了以下事情:

params[:controller].singularize.downcase # => "article"
Run Code Online (Sandbox Code Playgroud)

现在我想访问@article.我怎样才能做到这一点?

bor*_*r1s 11

instance_variable_get()红宝石中有一种方法.所以尝试这样的事情:

var_name = params[:controller].singularize.downcase # article
instance_variable_get("@#{var_name}")
Run Code Online (Sandbox Code Playgroud)

PS:记住你应该instance_variable_get在适当的环境中使用.