簡體   English   中英

計算嵌入式紅寶石中的值

[英]counting values in embedded ruby

快速射擊問題。

如果我有一個值列表,而又不想找到總數並將其顯示在嵌入式紅寶石中,那我將如何處理。

<% @user.recipes.each do |i| %>
  <% i.awards.each do |k| %>
    <%= k.points %>
  <% end %>
<% end %>

這將呈現:

1 10 5 5 10 1 5 10 5 1 

每個數字(1、5或10)都是數據庫中的值。 有什么辦法可以計數嗎? 還是在控制器中創建一個單獨的方法來解決這個問題會更好?

<%= i.awards.sum(:points) %>

對於所有配方中所有點的總和:

<%= @user.recipes.map { |r| r.awards.sum(:points) }.sum %>

盡管在模型中進行此計算可能是明智的。 如果您在多個視圖中使用重復項,將會以這種方式刪除大量重復項。

更新:

根據以下評論,您還可以要求數據庫為您計算總和:

<%= @user.recipes.joins(:awards).sum('awards.points') %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM