-1

Я работаю с календарем, и я думаю, что календарь имеет дело только с датой без времени.Как получить дату только по атрибуту DateTime? работая в календаре

Примечание: requested_date является DateTime Атрибут. Я хочу, чтобы все оговорки с указанной датой и тайными его на сегодняшний день только:

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 .. моя единственная проблема на контроллере, и я просто хочу получить дату из атрибута DateTime. –

+0

@AnthonyE \t i update myprofile.html.erb и посмотреть новое загруженное изображение вывода. проблема с циклом. –

ответ

0

Я не думаю, что вы хотите использовать group на вашем отношении ActiveRecord не group_by который является методом рубин.

Кроме того, метод, чтобы получить Date от DateTime объекта datetime.to_date:

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

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

Обычно я советую вам попробовать сгруппировать данные в БД уже (с использованием 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 %> 

 Смежные вопросы

  • Нет связанных вопросов^_^