【问题标题】:How to access instance variable dynamically based on params[:controller]?如何根据 params[:controller] 动态访问实例变量?
【发布时间】:2012-01-14 22:48:05
【问题描述】:

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

但我只得到一个String。如何调用像字符串一样命名的实例变量?

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

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

现在我想访问@article。我该怎么做?

【问题讨论】:

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


    【解决方案1】:

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

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

    P.S:记住你应该在适当的上下文中使用instance_variable_get

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多