Ruby on rails 如何仅在DateTime属性上获取日期?在日历上工作
我正在使用日历,我认为日历只处理日期,没有时间 注意:请求的_日期是一个DateTime属性。我想获得所有预定的请求日期,并将其改为仅限日期: 用户\u控制器.rbRuby on rails 如何仅在DateTime属性上获取日期?在日历上工作,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,我正在使用日历,我认为日历只处理日期,没有时间 注意:请求的_日期是一个DateTime属性。我想获得所有预定的请求日期,并将其改为仅限日期: 用户\u控制器.rb def myprofile @reservation = Reservation.all @resv_by_date = @reservation.group_by(&:requested_date) <-- make requested_date to date only end <div i
def myprofile
@reservation = Reservation.all
@resv_by_date = @reservation.group_by(&:requested_date) <-- make requested_date to date only
end
<div id="admin">
<%= calendar do |date| %>
<%= date.day %><br>
<% @resv_by_date.each do |reservation| %>
<%= reservation.requested_date.to_date %><br>
<% end %>
<% end %>
</div>
def myprofile
@预订=预订。全部
@resv_by_date=@reservation.group_by(&:requested_date)我认为您不想在ActiveRecord关系中使用group
而不是group_by
这是一种Ruby方法
另外,从DateTime
对象获取Date
的方法是DateTime。to_Date
:
@reservations_by_date = Reservation.select(:requested_date).group(:requested_date)
@reservations_by_date.each { |reservation| puts reservation.requested_date.to_date }
通常,我建议您尝试将数据库中的数据分组(使用group
),以提高性能,而不是使用ruby代码(group\u by
)。但在您的特定情况下,您似乎确实需要检索给定时间段(例如月)内的所有预订,并按日期对它们进行分组,以便您可以在日历视图中显示所有预订。在这种情况下,您确实需要使用ruby代码进行分组
您只需更新组\u中的块即可:
@reservations_by_date = Reservation.all.group_by { |res| res.requested_date.to_date }
请注意,您可能希望首先使用where
条件将选择范围缩小到给定的时间段(例如显示的月份),我在回答中跳过了该部分
上面的分组将创建一个保留的散列,其中键是日期(而不是日期时间),值是给定日期中的保留数组。在“日历”视图中,使用日期键访问日历后,您只需浏览即可:
<% calendar do |date| %>
<%= date.day %><br>
<% @reservations_by_date[date].each do |reservation| %>
<%= reservation.name ... or whatever %><br>
<% end %>
您使用的是什么数据库?@AnthonyE Sqlite。。我唯一的问题是控制器,我只想从DateTime属性获取日期。@AnthonyE我更新myprofile.html.erb并查看新上传的输出图像。。循环有问题。请更正语法并改进格式。显示屏幕截图