0

インドの会計年度 (4 月 1 日から 3 月 31 日まで) によると、月が 1 月に変更されたときに範囲を取得する方法 12 月 31 日以降、ロジックが失敗し、何も表示されません。すべての月を表示するコードは次のとおりです。

def self.get_month(month)
    months={
       '1'=> 'January',
       '2'=> 'February',      
       '3'=> 'March',
       '4'=> 'April',
       '5'=> 'May',
       '6'=> 'June',
       '7'=> 'July',
       '8'=> 'August',
       '9'=> 'September',
       '10'=> 'October',
       '11'=> 'November',
       '12' => 'December'
      }
   months[month]
 end 

ビュー:

<% (current_financial_year.start_date.month..Date.today.month).times do |a| %>
             <tr>
               <td><%= PayrollDetails.get_month(a.to_s)%></td>
             </tr>
             <% end %>

このコードは 12 月までは正常に機能しますが、年が変わった 1 月に何も表示されず、次のエラーが発生しました。

undefined method `times' for 4..1:Range

Rails3でこのリバースレンジの問題を修正するにはどうすればよいですか、よろしくお願いします。

4

2 に答える 2

1

ラップケースを扱っていないようです。それを処理する方法はたくさんあります。これは私が考えることができる最も基本的な方法です:

<% (current_financial_year.start_date.month..(Date.today.month < current_financial_year.start_date.month ? Date.today.month+12 : Date.today.month)).times do |a| %>
  <tr>
    <td><%= PayrollDetails.get_month((a%12).to_s)%></td>
  </tr>
<% end %>

これはかなり醜いです。のローカル変数を作成するcurrent_monthか、クラスを開いて、ロジックDateを実行する会計月を定義することができます。? :

それが役立つことを願っています。

于 2013-01-12T21:35:49.537 に答える
0

私は@Geoffの答えに同意します。私の状態に合うようにこの少し変更しました。

 <% for a in (current_financial_year.start_date.month..(Date.today.month < current_financial_year.start_date.month ? Date.today.month+12 : Date.today.month)) %>
             <tr>
               <td><%= PayrollDetail.get_month((a>12? (a -12) : a ).to_s)%></td>
<% end %>

そして、これは私のために働きます。

于 2013-01-15T08:45:15.467 に答える