【发布时间】:2013-11-26 09:55:45
【问题描述】:
我的 Ruby 应用在处理时显示月初(第 1 天):
start_month => Date.today.month
我想要月底,所以我改成了:
start_month => Date.today.end_of_month
但它显示的是月初。你知道为什么吗?
根据cmets,我改写如下,还是不行。我确定我拼错了什么
<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>
【问题讨论】:
-
Date.today.month不显示月初,而是显示月份。而且,在带有require "date"的普通Ruby 中没有Date#end_of_month。 -
如果您使用的是 Rails,那么
end_of_month确实应该显示月底(例如,今天调用它会得到Sat, 30 Nov 2013)。不应有错误或异常行为。代码中很可能还有其他问题,或者我们没有看到的某些部分。 -
@Teeg +1,很可能是其他问题。如果您想在 rails/activesupport 之外执行此操作,Date.new(2013, 11, -1) 将为您提供给定年/月的最后一天。
-
其实我只是写了 end_month => Date.today.end_of_month 还是不行
-
@Mel 你是在使用 Rails 还是这是一个普通的 Ruby 应用程序?试试 Eric Andres 的建议。
标签: ruby-on-rails ruby time activesupport