1

コントローラーには、月の短いバージョンを含む配列があります。

@months = ['apr', 'may', 'jun', 'jul', 'aug', 'sep', 'aug', 'sep', 'oct', 'nov', 'dec', 'jan', 'feb', 'mar']

次に、コントローラーで変数を定義しました。

@apr_direct_income = 25300
@may_direct_income = 22100

と:

@april_partner_income = 1010
@may_partner_income = 2020

ビューでは、これらすべてのフィールドを表示する必要があり、長い道のりでそれを行うことができますが、Haml で次のようなことを行うことで少し乾かしたいと考えていました。

- @months.each do |m|
  = "#{m}_direct_by_activation_date"

変数名は正しく出力されますが、文字列として出力されます。それが変数名であることを認識してから、コントローラーから値を取得するようにしたいので、表示する代わりに:

@apr_direct_income
@may_direct_income

以下が表示されます。

25300
22100

毎月約 10 種類の収入を表示する必要があるため、この方法でこれを DRY すると、数百行の反復コードが非常に小さなページに変わります。

4

3 に答える 3

0

次の例を検討してください。

@m = ["jan","feb"]
@jan_income = 1000
@feb_income = 500

eval "@"+@m[0]+"_income" #=> 1000

@m.each { |m| puts eval "@"+m+"_income" } => 1000, 500
于 2013-07-08T15:11:50.343 に答える