我正在尝试在我正在进行的调用中获取Class对象,但我能找到它的唯一地方是params[:controller]
。但这会返回一个字符串。
我能找到只有字符串的Class对象吗?
答案 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")