2011-12-14 4 views
0

私は作成しているコールでClassオブジェクトを取得しようとしていますが、私が見つけることができる唯一の場所はparams[:controller]です。しかし、これは文字列を返します。文字列だけで利用できるクラスを見つけることができますか?

文字列だけでClassオブジェクトを見つけることはできますか?

+0

どこからコールしていますか、パラメータとして渡そうとしているものは何ですか?あなたがコントローラにいれば、 'self'を使います。それはコントローラを回すことは素晴らしいアイデアだと私は思っています。 –

答えて

2

あなたはconst_getとの組み合わせで、あなたが必要なものであるべき、適切な名前の定数に文字列を変換するために使用することができますclassify方法があります。

ObjectSpace.const_get( "アレイ" .capitalize).new#=> []

:ここでは簡略化した例、Iは、現時点で入手可能なレールコンソールを持っていません

Railsのようなもの

"array".classify.constantize.new 

でも動作します。

0

string to classには、string.constantizeを使用できます。しかし、要求を処理している現在のコントローラオブジェクトを探していますか?

1

あなたはこの方法でクラスに文字列を変換することができます

"class".capitalize.constantize 
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") 
関連する問題