【发布时间】:2019-10-02 17:49:57
【问题描述】:
我有一个网站,客户可以在其中购买活动门票,并创建了一个 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 没有错误,页面加载时带有标题和按钮。该表只是没有填充。
【问题讨论】:
-
您是否确认
@reporter.events正在返回一个非空的array? -
刚刚检查过,
@reporter.events正在返回一个空数组。知道为什么它通过 RSpec 测试以提取信息但对真实数据正常工作吗?我知道这一定是我错过的一些简单的事情...... -
您确定您有满足指定条件的
Tickets 吗?您的 RSpec 问题的答案是您可能已将测试数据配置为返回Ticket的值,但您的实时数据可能未返回Ticket的值。或者,至少这是我的猜测。 -
就是这样 - 我的测试日期超出了我的规格 - 更改了
week_ago_in_time_zone以允许从今天开始的所有日期返回一整年并填充表格。谢谢@jvillian! -
添加为未来搜索者的答案。请随意投票/接受。
标签: ruby-on-rails ruby haml