2010-12-03 20 views
1

ヘルパー内のテンプレートからローカルテンプレート変数を取得できますか?ヘルパー内のテンプレート変数を取得

test.html.erb:

<% my_test_var = 'wonderful' %> 
<%= my_output %> 

test_helper.rb:

def my_output 
    return @template[:my_test_var] 
end 

もちろん@templateが存在しません。それを得る方法はありますか(@ではグローバルではありません)。

よろしくお願いいたします。

編集:テンプレートtest.html.erbは、ローカル変数で、部分的レンダリングと呼ばれる

render 'test', :locals => { :my_test_var = 'hallo'} 

私は私のヘルパーで、この渡された変数を必要としています。

答えて

0

ヘルパーは、あなただけのような何かを行うことができ、通常の方法である:

<% my_test_var = 'wonderful' %> 
<%= my_output(my_test_var) %> 

test_helper.rb:

def my_output output 
    return output 
end 
+0

はい、そうですが、私の場合は少し難しいです。上記を参照して、私は私の質問を編集しました。 – frank

+0

変数があれば、パラメータとして渡すことができます... –

+0

はい、私はそれを望んでいません。私はそれが常に利用可能であるため、パラメータを渡すことなくテンプレートダイレクトから参照したいと思います。 – frank

2

あなたは、それらを渡すことなく、ヘルパーでアクセステンプレート変数をしたい場合私が知っている唯一の方法は、それらをインスタンス変数にすることです。

<% @my_test_var = 'wonderful' %> 
<%= my_output %> 

def my_output 
    return @my_test_var 
end 

これはお勧めできません。理想的には、インスタンス変数はコントローラで定義し、ビューで使用する必要があります。なぜヘルパーメソッドに変数を渡すことができないのかわかりません。それが要件でない場合、私はkrusty.arの答えをサポートします。

関連する問題