如何根据印度财政年度设定月份范围

时间:2013-01-12 06:05:57

标签: ruby-on-rails-3 date-range

根据印度财政年度(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中修复此反转范围问题,提前感谢。

2 个答案:

答案 0 :(得分: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类并定义执行? :逻辑的财务月份。

我希望有所帮助。

答案 1 :(得分: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 %>

这对我有用。