2015-08-12 3 views
0

Извините за мой плохой английский, но у меня есть эта проблема, чтобы визуализировать некоторые данные из db. Я создаю файл-помощник, чтобы манипулировать и устанавливать визуализацию и одну модель для извлечения строки из БД и сгруппированы по дате. проблема: возвращение модели 0 (по: цена), но БД заполнена.Ошибка при визуализации данных на Ruby on Rails 4

ЭТО ХЕЛПЕР:

module RoomsHelper 
    def rooms_chart_data(start = 3.weeks.ago) 
    rooms_by_day = Room.total_grouped_by_day(start) 
    (start.to_date..Date.today).map do |date| 
     { 
      reservation: date, 
      price: rooms_by_day[date].try(:total_price) || 0 
     } 
    end 
    end 
end 

ЭТО МОДЕЛЬ:

class Room < ActiveRecord::Base 
    def self.total_grouped_by_day(start) 
    rooms = where(reservation: start.beginning_of_day..Time.zone.now) 
    rooms = rooms.group("date(reservation)") 
    rooms = rooms.select("sum(price) as total_price, reservation") 
    rooms.group_by { |o| o.reservation.to_date } 
    end 
end 

И я Вставьте выходные неправильно:

 <div id="year_chart" data-rooms="[{&quot;reservation&quot;:&quot;2015-07-22&quot;,&quot;price&quot;:0}, 
{&quot;reservation&quot;:&quot;2015-07-23&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-24&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-25&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-26&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-27&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-28&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-29&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-30&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-07-31&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-01&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-02&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-03&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-04&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-05&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-06&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-07&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-08&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-09&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-10&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-11&quot;,&quot;price&quot;:0},{&quot;reservation&quot;:&quot;2015-08-12&quot;,&quot;price&quot;:0}]" 

ЭТО БД ТАБЛИЦА:

class CreateRooms < ActiveRecord::Migration 
    def change 
    create_table :rooms do |t| 
     t.integer :identity_room 
     t.integer :price 
     t.integer :guest 
     t.datetime :reservation 
     t.timestamps null: false 
    end 
    end 
end 

ПОСЛЕ ADD .to_s

module RoomsHelper 
    def rooms_chart_data(start = 3.weeks.ago) 
    rooms_by_day = Room.total_grouped_by_day(start) 
    (start.to_date..Date.today).map do |date| 
     { 
      reservation: date, 
      price: rooms_by_day[date.to_s].try(:total_price) || 0 
     } 
    end 
    end 
end 

ответ

0

Вы преобразования даты в строку в group(date(reservation)), а затем пытается искать элементы в хэш с струнной принуждаемого биографическую, например, rooms_by_day[date.to_s], а не rooms_by_day[date]

+0

пытался, но результат тот же. :-( – user3223239

+0

Вы тоже пытались добавить 'to_s' в' Room.total_grouped_by_day'? Что-то вроде 'rooms.group_by {| o |reservation.to_date.to_s}'. Кроме того, попробуйте сбросить содержимое объекта 'rooms_by_day' внутри' RoomsHelper.rooms_chart_data', поэтому вы можете понять, какие ключи составляют этот хэш. Я могу предложить вам вставить 'binding.pry' после инициализации этой переменной. Это требует добавления Pry к Gemfile: gem 'pry-rails' gem 'pry-rescue' – olistik

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