-1

我正在使用日曆,我認爲該日曆只處理沒有時間的日期。如何僅在DateTime屬性上獲取日期?在日曆上工作

注意:requested_date是日期時間屬性。我想有要求的日期所有保留和它隱蔽僅日期:

users_controller.rb

def myprofile 
    @reservation = Reservation.all 
    @resv_by_date = @reservation.group_by(&:requested_date) <-- make requested_date to date only 
end 

myprofile.html.erb

<div id="admin"> 
<%= calendar do |date| %> 
    <%= date.day %><br> 
     <% @resv_by_date.each do |reservation| %> 
     <%= reservation.requested_date.to_date %><br> 
    <% end %> 
<% end %> 
</div> 

(this month 'May') requested_date is existing on my database (this month 'May') requested_date is existing on my database

image output after the solution of the 1st answer image output after the solution of the 1st answer

+0

什麼數據庫您使用的? –

+0

@AnthonyE Sqlite ..我唯一的問題是在控制器上,我只是想從日期時間屬性獲取日期.. –

+0

@AnthonyE \t 我更新myprofile.html.erb並查看新上傳的輸出圖像..有循環的問題。 –

回答

0

我不認爲你想在你的ActiveRecord的關係用一個groupgroup_by這是一個Ruby方法。

此外,該方法從一個DateTime對象得到Datedatetime.to_date

@reservations_by_date = Reservation.select(:requested_date).group(:requested_date) 

@reservations_by_date.each { |reservation| puts reservation.requested_date.to_date } 
0

一般情況下我建議你嘗試組中的DB已經(使用group)出於性能的考慮,而不是數據的紅寶石代碼(group_by)。但在具體情況下,您似乎確實需要在給定時間段(例如月)內檢索所有預訂,並將其按日期分組,以便您可以在日曆視圖中顯示所有預訂。在這種情況下,你確實必須用ruby代碼進行分組。

你可以做到這一點只需在group_by更新塊:

@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 %> 
相關問題