2011-12-07 12 views
3

params[:controller]変数に基づいて、さまざまなコントローラのインスタンス変数にアクセスする必要があります。 singularizedowncaseを使用して、インスタンス変数の名前を定義します。これは、慣例によってコントローラ名の単数形です。params [:controller]に基づいてインスタンス変数に動的にアクセスする方法は?

しかし、私はStringを取得します。どのように文字列のような名前のインスタンス変数を呼び出すことができますか?

は、例えば、私は、コントローラArticlesを持っているので、私は次の操作を行います。

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

は今、私は@articleにアクセスしたいです。これどうやってするの?

答えて

10

ルビーにinstance_variable_get()メソッドがあります。したがって、このような何かを試してみてください。

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

P.S:あなたは適切なコンテキストでinstance_variable_getを使用する必要があることを覚えておいてください。

+0

ありがとうございました! – davidb

+0

あなたは歓迎です:) – bor1s

+0

素晴らしい答え。私はこれから学び、それを感謝:) – jaydel

関連する問題