Я стараюсь следовать этому Railscast и создавать диаграмму линии morris.js для моей модели запроса.Rails Итерация по месяцам заданный диапазон дат
Я сгруппировал подсчеты с использованием date_trunc
в месяцах, но теперь я не совсем уверен, как получить ось X для повторения в течение нескольких месяцев (например, июн 2012, июль 2013), а не по дате, как в примечания railscasts.
Я пробовал диапазон # шаг method here, но теперь на графике отображается только одна дата (2012-07-01) без счета и ничего больше. Комментирование метода из переменной диапазона, и график работает отлично, но ось x выполняет итерацию по дате.
class Enquiry < ActiveRecord::Base
def self.chart_data(start = 1.year.ago)
total_count = total_count_by_month(start)
start = start.to_date.beginning_of_month
today = Date.today.beginning_of_month
range = (start..today).step(1.month)
range.map do |month|
{
created_at: month,
total_enquiries: total_count[] || 0
}
end
end
def self.total_count_by_month(start)
enquiries = unscoped.where(created_at: start.beginning_of_month..Time.now)
enquiries = enquiries.group("date_trunc('month', created_at)")
enquiries = enquiries.select("date_trunc('month', created_at) as created_at, count(*) as count")
enquiries.each_with_object({}) do |enquiry, counts|
counts[enquiry.created_at.to_date] = enquiry.count
end
end
end
Как получить диаграмму оси Х на итерацию по месяцам (июнь 2013, июль 2013 ....), а не по датам?
Возможный дубликат [Итерации каждый месяц с объектами даты] (http://stackoverflow.com/questions/1724639/iterate-every-event-with-date-objects) – oldergod
omg Я чувствую себя таким идиотом! заменяя .step (1.month) на .select {| d | d.day == 1} работает как шарм. –
Ирония заключается в том, что я действительно пытался сделать это решение работать в течение нескольких часов, прежде чем я сдался и отправил свой вопрос. Как всегда, решение всегда на шаг впереди. Большое спасибо –