现在,用户可以通过表单向网站提交项目。它收集的信息是购买价格,销售价格和数量。从那里,我计算这样的利润:
<td><%= number_with_delimiter(((item.soldfor - item.boughtfor) * item.quantity)) %></td>
我接下来要做的是显示用户在特定时间段内发布的所有项目的利润,如下所示:
所有时间:1,000,000 |今天:102,111 |本周:200,111
问题在于利润只是一种计算,我无法在其他任何地方调用它。如何以一种允许我这样做的方式组织利润计算?
答案 0 :(得分:2)
您应该在Item
模型上编写一个方法来返回利润:
class Item < ActiveRecord::Base
...
def profit
(soldfor.to_f - boughtfor.to_f) * quantity.to_f ## or use .to_i if you prefer integers
end
...
end
然后在您看来,您可以致电:
<td><%= number_with_delimiter(item.profit) %></td>
或者,如果您想获得@items
集合中所有内容的总利润:
@items.sum(&:profit)
所以在你的情况下,你可能会在控制器中做这样的事情:
@all_time_items = Item.where(<conditions for all_time>)
@this_week_items = @all_time_items.where(<conditions for this_week>)
@today_items = @this_week_items.where(<conditions for today>)
然后在你看来:
All time: <%= @all_time_items.sum(&:profit) %> | Today: <%= @today_items.sum(&:profit) %> | This week: <%= @this_week_items.sum(&:profit) %>
答案 1 :(得分:1)
你想动态调用方法吗? 然后怀疑辅助方法
def number_with_delimite(soldfor,boughtfor,quantity)
(soldfor - boughtfor) * quantity)
end
在这里你可以调用具有日期和时间条件的方法
number_with_delimite(item.soldfor.item.boughtfor,item.quantity)