月底Ruby

时间:2013-11-13 17:01:25

标签: ruby-on-rails ruby time activesupport

我的Ruby应用程序在处理时显示月初(第1天):

start_month => Date.today.month

我想在月底结束,所以我把它改成了:

start_month => Date.today.end_of_month

但它显示了月初。你知道为什么吗?

根据评论,我改写如下,但它仍然无效。我相信我拼错了一些东西

<div class="field">
  <%= f.label :delivered_at, "Estimated delivery"  %><br />
  <%= f.date_select(:delivered_at.end_of_month, :start_year => Date.today.year, :start_month => Date.today.end_of_month,:prompt => { :month => 'Choose month', :year => 'Choose year'}, :discard_day => true) %>
</div>

2 个答案:

答案 0 :(得分:0)

考虑到您所显示的视图的代码,我猜测您的问题出在您的控制器代码中。如果您查看f.date_select的{​​{3}},则丢弃该日会导致其默认为该月的第一天。除非您在控制器中使用delivered_at执行某些操作,否则它将始终是该月的第一天,因此您需要在保存模型之前将其更改为delivered_at.end_of_month

答案 1 :(得分:0)

Date.today.to_date.end_of_month

输出:

Sat, 30 Nov 2013

Date.today.to_date.end_of_month.month

输出:

11