Извините за мой плохой английский, но у меня есть эта проблема, чтобы визуализировать некоторые данные из 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="[{"reservation":"2015-07-22","price":0},
{"reservation":"2015-07-23","price":0},{"reservation":"2015-07-24","price":0},{"reservation":"2015-07-25","price":0},{"reservation":"2015-07-26","price":0},{"reservation":"2015-07-27","price":0},{"reservation":"2015-07-28","price":0},{"reservation":"2015-07-29","price":0},{"reservation":"2015-07-30","price":0},{"reservation":"2015-07-31","price":0},{"reservation":"2015-08-01","price":0},{"reservation":"2015-08-02","price":0},{"reservation":"2015-08-03","price":0},{"reservation":"2015-08-04","price":0},{"reservation":"2015-08-05","price":0},{"reservation":"2015-08-06","price":0},{"reservation":"2015-08-07","price":0},{"reservation":"2015-08-08","price":0},{"reservation":"2015-08-09","price":0},{"reservation":"2015-08-10","price":0},{"reservation":"2015-08-11","price":0},{"reservation":"2015-08-12","price":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
пытался, но результат тот же. :-( – user3223239
Вы тоже пытались добавить '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