我有一个部分应该根据params[:controller]
变量访问各种控制器的实例变量。使用singularize
和downcase
,我定义了实例变量的名称,按惯例,它是控制器名称的单数。
但我只得到String
。如何调用名为string?
例如,我有控制器Articles
,所以我执行以下操作:
params[:controller].singularize.downcase # => "article"
现在我想访问@article
。我怎么能这样做?
答案 0 :(得分:11)
ruby中有一个instance_variable_get()
方法。所以尝试这样的事情:
var_name = params[:controller].singularize.downcase # article
instance_variable_get("@#{var_name}")
P.S:请记住,您应该在适当的背景下使用instance_variable_get
。