Рельсы: как подсчитать общую стоимость за день - PullRequest
0 голосов
/ 23 октября 2018

Я хочу рассчитать общую стоимость продажи билетов в день, когда он был продан.

Но он показывает общую стоимость последнего дня (общая цена за сегодня).

Что яполучил сейчас:

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) %>

Спасибо за помощь:)

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Итак, чтобы сделать то, что вы хотите, я бы представил следующий код ...

<% 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 %>
0 голосов
/ 23 октября 2018

Вы делаете

<%= Ticket.daily_total_price %>

Но это всегда по умолчанию первый аргумент к сегодняшней дате (вы написали ->(date_time = Time.now) Что вы хотите сделать, это передать соответствующую дату в ... поставить датув переменную экземпляра '@date' в вашем контроллере, а затем выполните ...

<%= Ticket.daily_total_price(@date) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...