2016-10-20 2 views
0

Этот вопрос относится к this ранее задаваемым вопросом.Rails 5 Несколько сумм и присоединяйтесь

Мои БД столбцы для модели Taxline: ID, Квитанция, TAXID, БАЗА, СУММА с записями: 1,1,001,30 $, 3 $

2,1,001,50 $, 5 $

3,2,001,20 $, 2 $

А потом вторая таблица со столбцами: TicketID, TICKETNUMBER

Мой контроллер

class TaxlinesController < ApplicationController 

    def index 
    @taxlines = Taxline.group(:RECEIPT).sum(:AMOUNT) 
    end 

end 

мой взгляд

<% @taxlines.each do |receipt, amount| %> 

     <td><%= receipt %></td> 
     <td><%= amount %></td> 
<% end %> 

Это прекрасно работает, чтобы показать билет для каждой строки с соответствующим общей суммы.

Вопрос 1. Каков надлежащий способ показать также сумму BASE? Я пробовал .sum(:AMOUNT, :BASE) and .sum(:AMOUNT).sum(:BASE), но они оба не работают.

Вопрос 2. Если теперь я звоню, например, <%= taxline.TAXID %> Я получаю сообщение об ошибке. Чтобы решить эту проблему, я попытался добавить в поле зрения <% @taxlines.each do |receipt, amount, taxid| %> and <td><%= taxid %></td>. And in controller @taxlines = Taxline.group(:RECEIPT).sum(:AMOUNT).select(:TAXID). Но это показывает пустой столбец.

Вопрос 3. Я хочу показать значение TICKETNAME из таблицы TICKETS. Я уже установил в Ticketline Model belongs_to :ticket. Я предполагаю, что после решения вопроса 1 я смогу сделать ticketline.ticket.TICKETNAME.Right?

ответ

0

Вопрос 1:

Попробуйте

@taxlines = Taxline.group(:RECEIPT).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE") 

question2:

Чтобы получить доступ к TAXID вам нужно добавить это в группе столбцов.

@taxlines = Taxline.group(:RECEIPT, :TAXID).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE, TAXID") 

Вопрос 3:

Чтобы получить доступ к другой переменной таблице, вам нужно добавить присоединиться заявление на запрос, а затем вы должны группа.

@taxlines = Taxline.joins(:ticket).group(:RECEIPT, :TAXID).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE, TAXID, TICKETNAME") 

На стороне просмотра попробуйте нижеследующий.

<% @taxlines.each do |taxline| %> 

     <td><%= taxline.AMOUNT %></td> 
     <td><%= taxline.BASE %></td> 
     <td><%= taxline.TAXID %></td> 
     <td><%= taxline.TICKETNAME %></td> 

<% end %> 

P.S: Не пробовал это.

+0

Работает отлично. Благодаря! – Catmal

+0

Итак, прошу проголосовать за мой ответ и отметить его как правильный ответ :-) – Jayaprakash

+0

Done thanks again! – Catmal

Смежные вопросы