我想循环一个基于用户参数的计算。
我的索引操作示例:
@com = Company.where(:online => true).order('position')
我的桌子是:
Name (varchar)
Price1 (integer)
Price2 (integer)
Price1in (integer)
Price2in (integer)
在视图中,我有了一个简单的循环:
<%= com.name %><br />
<%= com.price1 %><br />
<%= com.price2 %>
我已经创建了一个实例方法来进行一些计算。 型号:
def sum_price(x)
(((x - self.price1in) * (60 * self.price1)) / 100))
end
def sum_price2(x)
(self.price2 * x / 100)
end
我现在可以做到:
<% @com.each do |com| %>
<%= com.name %><br />
<%= com.price1 %><br />
<%= com.price2 %><br />
<%= com.sum_price(params[:price]) %><br />
<%= com.sum_price2(params[:price2]) %>
<% end %>
但我想通过total_price订购com.sum_price2(params[:price]) + com.sum_price2(params[:price2])
,我希望能够在视图中将其称为:
<% @com.each do |com| %>
<%= com.name %><br />
<%= com.total_price %><br />
<% end %>
答案 0 :(得分:3)
这应该有效:
class Company
include Comparable
attr_accessor :total_price
def <=> other
self.total_price <=> other.total_price
end
def sum_price(x)
(((x - self.price1in) * (60 * self.price1)) / 100))
end
def sum_price2(x)
(self.price2 * x / 100)
end
def calculate_total price1, price2
@total_price ||= sum_price(price1) + sum_price2(price2)
end
end
#controller
@companies = Company.all
@companies.each{|company| company.calculate_total(params[:price], params[:price2])}
@companies.sort!