Rails:如何计算每天的总价
Rails: How to sum total price per day
我想计算售票当天的总价。
但是显示的是最后一天的总价(今天的总价)。
我现在得到的:
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) %>
感谢您的帮助:)
你正在做
<%= Ticket.daily_total_price %>
但这总是将第一个参数默认为今天的日期(你写了 ->(date_time = Time.now)
你想要做的是将适当的日期传递给......将日期放入一个'@date'实例变量中你的控制器然后做...
<%= Ticket.daily_total_price(@date) %>
所以为了做你想做的事,我想像下面的代码...
<% date_for_group = nil %>
<% @tickets.each do |ticket| %>
<% if ticket.created_at.to_date != date_for_group %>
<%# show total of previous group %>
<% if date_for_group %>
<br/>
Total for <%=date_for_group.strftime("%d %B") %></br>
<%= Ticket.daily_total_price(date_for_group) %>
<br/>
<% end %>
<%= ticket.created_at.strftime("%d %B") %>
<br/>
<% date_for_group = ticket.created_at.to_date %>
<% end %>
<%= ticket.user.username %>
<%= ticket.price %>
<% end %>
<% if date_for_group %>
<br/>
Total for <%=date_for_group.strftime("%d %B") %></br>
<%= Ticket.daily_total_price(date_for_group) %>
<br/>
<% end %>
我想计算售票当天的总价。
但是显示的是最后一天的总价(今天的总价)。
我现在得到的:
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) %>
感谢您的帮助:)
你正在做
<%= Ticket.daily_total_price %>
但这总是将第一个参数默认为今天的日期(你写了 ->(date_time = Time.now)
你想要做的是将适当的日期传递给......将日期放入一个'@date'实例变量中你的控制器然后做...
<%= Ticket.daily_total_price(@date) %>
所以为了做你想做的事,我想像下面的代码...
<% date_for_group = nil %>
<% @tickets.each do |ticket| %>
<% if ticket.created_at.to_date != date_for_group %>
<%# show total of previous group %>
<% if date_for_group %>
<br/>
Total for <%=date_for_group.strftime("%d %B") %></br>
<%= Ticket.daily_total_price(date_for_group) %>
<br/>
<% end %>
<%= ticket.created_at.strftime("%d %B") %>
<br/>
<% date_for_group = ticket.created_at.to_date %>
<% end %>
<%= ticket.user.username %>
<%= ticket.price %>
<% end %>
<% if date_for_group %>
<br/>
Total for <%=date_for_group.strftime("%d %B") %></br>
<%= Ticket.daily_total_price(date_for_group) %>
<br/>
<% end %>