2015-05-29 162 views
1

我有一本書模型,爲了這個問題的緣故,它有5個字段(id,title,issue,release_date,print_run)。我試圖填充按標題所以在這裏分組銷售表是我在我的控制器:分組時不顯示軌道記錄

@books = Book.all.where("release_date > ?", "2012-05-01").where("print_run > ?", "1").group(:title) 

在我看來,這裏的表的一部分:

<% @books.each do |title| %> 
<tr> 
<td><%= title.title %></td> 
<td class="text-center"> 
<% if title.print_run > 1 && title.release_date.between?((Date.today - 12.month).beginning_of_month, (Date.today - 12.month).end_of_month) %> 
<%= title.print_run %> 
<% else %> 
    0 
<% end %> 
</td> 
</tr> 
<% end %> 

每本書都有一個問題每個月,我有一個表格設置了14列(標題,每月一個,總數)。我想按月顯示每個TITLE的print_run,但是當我在控制器中使用group(:title)時,它只顯示上個月的打印運行(但其餘爲0)。如果我從控制器中刪除group(:title),它會在正確的月份顯示所有的打印運行,但每個問題都在自己的運行中。

這裏有幾張圖片來說明這個問題。提前致謝!

+0

這就是你的條件是,你正在檢查的開始和最後一個月是你的查詢 –

+0

(Date.today - 12.months).beginning_of_month顯示完全一樣,因爲它應該... 2014-05-01 and(Date .today - 12.months).end_of_month as 2014-05-31 so release_date正確地落在 – user3141095

+0

之間請理解您是在說1-5-2014和31-5-2014之間的發佈日期然後顯示print_run else 0 –

回答

0

作爲一個供參考我修改了整個事情......在我的控制器我現在有:

@book = Book.where(:rdate => (Date.today - 12.month)..(Date.today - 1.month)).where("printrun > ?", "1").select("DISTINCT(title)").group("title").order("title") 

...然後在我看來:

<%= Book.where(:title => title.title, :rdate => (Date.today - 1.month).beginning_of_month..(Date.today - 1.month).end_of_month).sum(:printrun) %> 

現在視圖部分可能不是很理想,我會動議到控制器在某個時候,但問題解決了。請注意,我必須在控制器中添加select(「DISTINCT(title)」)。group(「title」)。第一部分解決了我唯一的問題,但是讓我們看到了PGError,因爲PostgreSQL默認情況下是通過ID進行分組的。通過指定組(「標題」)我解決了問題(即使這看起來顯然是多餘的)。

希望這有助於下一個有類似問題的人。