你能找到一个只有字符串的可用类吗?

时间:2011-12-14 14:06:52

标签: ruby-on-rails ruby

我正在尝试在我正在进行的调用中获取Class对象,但我能找到它的唯一地方是params[:controller]。但这会返回一个字符串。

我能找到只有字符串的Class对象吗?

4 个答案:

答案 0 :(得分:2)

有一个classify方法可用于将字符串转换为适当命名的常量,它与const_get组合应该是您所需要的。这是一个简化的例子,我目前没有可用的Rails控制台:

  
    

ObjectSpace.const_get(“array”.capitalize).new#=> []

  

在Rails中像

"array".classify.constantize.new

也应该有用。

答案 1 :(得分:1)

您可以通过这种方式将字符串转换为类:

"class".capitalize.constantize

答案 2 :(得分:0)

对于字符串到类,可以使用string.constantize。但是,您正在寻找处理请求的当前控制器对象吗?

答案 3 :(得分:0)

如果没有Rails / ActiveSupport,这是如何做到的。

def constant_from_full_name(name)
  name.split("::").inject(::Object) do |const_so_far, name_fragment|
    const_so_far.const_get(name_fragment)
  end
end

constant_from_full_name("Some::Path::To::My::Class")