Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何仅在DateTime属性上获取日期?在日历上工作_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 4_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 如何仅在DateTime属性上获取日期?在日历上工作

Ruby 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

我正在使用日历,我认为日历只处理日期,没有时间

注意:请求的_日期是一个DateTime属性。我想获得所有预定的请求日期,并将其改为仅限日期:

用户\u控制器.rb

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并查看新上传的输出图像。。循环有问题。请更正语法并改进格式。显示屏幕截图