2017-02-15 6 views
0

を含めます。変数の値を計算する最初の部分は、さまざまなビューで使用されます。私はそれを別のファイルに引き出し、それを必要とする各ビューで使用して、1つの場所で変更するだけで済むようにしたいと考えています。私はそれを独自の部分にプルし、別のビューでその部分をレンダリングする場合、変数はビューで定義されていません。具体的には:は、私は次のコードのようなものを持っているビューの数には複数のビューでの変数定義

<% 
top = 0 
link.siblings_before.each do |sibling| 
    top = top + compute_top(sibling) 
end 
%> 

<div style="position:absolute;top:<%= top %>px"><%= link.name %></div> 

私は、各ビューにRubyコードをカット&ペーストすることなく、複数のビューでトップの計算を使用することができるようにしたいです。

+1

代わりにヘルパーメソッドを作成します。それぞれをループすることは本当に無駄に思える。あなたが達成しようとしていることは何でも、おそらくインデックスを使うか、より良いCSSを使うことでそれを実現できます。 – max

+0

事実、実際にはそれよりもはるかに複雑です。画面上には、ユーザーのやり取りに基づいて再描画する必要のあるオブジェクトが多数あります。これらの変数は、既存のオブジェクトのCSSを更新するためにjs.erbで使用されることがあります。これらの変数は、html.erbを通じて追加される新しいオブジェクトを設定するために使用されることがあります。 –

+0

レンダリングする部分を宣言すると、送信するローカル変数を設定することもできます。 レンタル 'shared/_multi_purpose_partial'、ローカル:{generic_local_variable:@whatever_local_variable}%> – teddybear

答えて

0

あなたの意見に論理を避けてください。

コントローラーにbefore_filterを定義し、必要な複数のアクションを有効にすることができます。

これらのビューでは、前のフィルタで定義された変数が使用でき、同時にビューをクリアに保ちます。

+0

s/variables/instance variables / –

関連する問題