【发布时间】:2018-10-23 09:59:39
【问题描述】:
我想计算售出当天的门票总价。
但它显示了最后一天的总价(今天的总价)。
我现在得到了什么:
October 20
Ticket 1 USD 1.11
Ticket 2 USD 2.22
Ticket 3 USD 3.33
Total For Today
USD 7.77 (HERE'S THE PROBLEM)
-------------------------------
October 21
Ticket 1 USD 1.11
Ticket 2 USD 2.22
Ticket 3 USD 4.44
Today's total
USD 7.77
我真正想要的是:
October 20
Ticket 1 USD 1.11
Ticket 2 USD 2.22
Ticket 3 USD 3.33
Today's total
USD 6.66
-------------------------------
October 21
Ticket 1 USD 1.11
Ticket 2 USD 2.22
Ticket 3 USD 4.44
Total For Today USD 7.77
我想要的是如何计算每天的总价(售票当天的总价)?
在票证模型中
scope :daily_total_price, ->(date_time = Time.now) { where('created_at BETWEEN ? AND ?',date_time.beginning_of_day, date_time.end_of_day).sum(:price) }
在工单控制器中
def index
@tickets = Ticket.all.order("created_at DESC")
@users = User.all
end
在票证索引中
<% tickets.each do |ticket| %>
<%= ticket.created_at.strftime("%d %B") %>
<%= ticket.user.username %>
<%= ticket.price %>
<% end %>
<%= Ticket.daily_total_price) %>
感谢您的帮助:)
【问题讨论】:
-
可能日期重叠并且从第二天开始计算 1.11?
-
@Garbela 在您的 ticket/index.html.erb 中,您将
Time.zone.parse("2018-10-23")直接传递给您的Ticket.daily_total_price()。您需要传入与其上方门票日期相对应的日期时间。换句话说,(假设您有另一个未在 index.html.erb 中显示的外部循环每天循环,那么像<%= Ticket.daily_total_price(tickets.first.created_at) %>这样的东西会起作用 -
@Jay-ArPolidario 是的,它的工作.. 非常感谢你先生 :)
-
@Garbela 没问题! :)) 祝你好运!
-
您可能会按本地时间的日期分组错误。如果不适合您的时钟,您可以使用
scope :daily_total_price, ->(date_time = Time.current)来比较显示的日期和时间。
标签: ruby-on-rails ruby-on-rails-5.2