Не удалось заполнить таблицу в haml значениями базы данных - Ruby on Rails - PullRequest
0 голосов
/ 02 октября 2019

У меня есть сайт, где клиенты могут приобрести билеты на мероприятие, и я создал класс Reporter::EventTickets для создания хэша для нужной мне информации. Reporter::EventTickets вызывается в контроллере отчетов, и в конечном итоге я хочу просмотреть это на странице отчета администратора.

Я не могу получить информацию, отображаемую на моей таблице в моем файле представления haml! Я перепробовал все, что мог придумать, и совершенно не понимаю, что делать.

Информация успешно сохраняется в базе данных (PostgreSQL), и класс EventTickets корректно преобразовывает данные (проходя тесты RSpec).

Код:

class Reporter::EventTickets
  include Virtus.model

  def events
    products.map do |product|
      line_items = LineItem.includes(:order)
        .where("orders.completed_at IS NOT NULL")
        .where(purchasable_type: "Product", purchasable_id: product.id)
        .references(:order)

      ticket_purchases = line_items.map do |line_item|
        order = line_item.order

        [order.bill_address_full_name, order.email, line_item.quantity]
      end
      total = ticket_purchases.reduce(0) { |sum, purchase| sum + purchase.last }

      {
        date: product.event_date,
        name: product.name,
        total: total,
        purchases: ticket_purchases.sort
      }
    end
  end

  private

  def products
    Ticket.where("event_date >= ?", week_ago_in_time_zone).order("event_date ASC")
  end

  def week_ago_in_time_zone
    (Time.current - 7.days).to_date
  end

end

Контроллер:

def event_tickets
    @reporter = Reporter::EventTickets.new
    @csv_link = admin_reports_event_tickets_path(format: :csv)
    respond_with @reporter
end

Модели:

class Order < ActiveRecord::Base
  has_many :line_items, dependent: :destroy
class LineItem < ActiveRecord::Base
  belongs_to :order, touch: true
  belongs_to :purchasable, polymorphic: true
class Product < ActiveRecord::Base
  include Purchasable
  has_many :line_items, as: :purchasable

Вид:

= render partial: "admin/shared/header", locals: {title: "Event Ticket Purchases"}
.container-fluid.padded
  = render partial: "admin/shared/notifications"
  .row-fluid.hidden-print
    = link_to "Download CSV", @csv_link, class: "btn btn-blue"
  .row-fluid
    - @reporter.events.each do |event|
      %h3
        = event[:date].strftime("%_m/%e")
        = event[:name]
      .box
        %table.table.table-normal
          %thead
            %tr
              %td Name
              %td Email
              %td Tickets
          %tbody
            - event[:purchases].each do |purchase|
              %tr
                - purchase.each do |column|
                  %td= column
            %tr
              %td{:colspan => "2"}
                %b TOTAL
              %td
                %b= event[:total]

В Rails нет ошибок, и страница загружается с заголовком и кнопкой. Таблица просто не заполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...