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