我正在创建自己的日历并遇到一些问题......现在我正在使用Date.today.beginning_of_month
来获取当前月份。我的控制器设置如此......
#Controller
def calendar
@day_of_month = current_month
end
def current_month
date = Date.today.beginning_of_month
return (date..date + 31.days).to_a
end
在我看来,我有以下几点......
<% @days_of_month.each_slice(7) do |slice| %>
<div class="week_row_in_month">
<% slice.each do |day| %>
<div class="month_day" id="<%= day %>">
<div class="header">
<%= day.strftime("%A") %>
</div>
</div>
<% end %>
</div>
<% end %>
问题是我的&#34;日历&#34;从这个月的第一天开始(我理解为什么......因为beginning_of_month
方法)...但是如果4月1日在星期三落下......我怎么会把它对齐所以它落在了星期三的div并没有像星期日div那样对齐?
我希望这是有道理的。如果有任何混淆让我知道,我会编辑澄清。
答案 0 :(得分:1)
为了让您的日历以您描述的方式在本周初开始,您可以执行以下操作:
# Controller
def calendar
@days_of_month = current_month
end
def current_month
date = Date.today.beginning_of_month
start_date = date - date.wday
end_date = date.end_of_month + (6 - date.end_of_month.wday)
return (start_date..end_date).to_a
end
由于Date#wday
方法将星期几作为数字(0-6,星期日为零)返回,因此您可以使用它快速查找星期的开始日期。有关此方法的更多信息,请访问:http://ruby-doc.org/stdlib-2.2.1/libdoc/date/rdoc/Date.html#method-i-wday