在 Rails 3.2 Ruby 1.9 中工作。
试图弄清楚如何调用不依赖于模型对象的辅助方法。例如,当我编写这样的辅助方法时,我的应用程序有一个 Products 模型:
module StoreHelper
def units_available (product)
sales = product.line_items.total_product_sale.sum("quantity")
units_available = (product.total_avail - sales)
end
我可以在我看来没有这样的问题
<% @products.each do |product| %>
<%=units_available(product)%>
<%end%>
但是,当我有这样的助手时:
module StoreHelper
def current_promo_status (level1_status, level2_status)
if level1_status == "Active"
current_status = "1"
elsif level2_status == "Active"
current_status = "2"
else current_status = "3"
end
end
def discount (current_promo_status)
discount = product.price3 if current_promo_status == 3
discount = product.price2 if current_promo_status == 2
discount = product.price if current_promo_status == 1
end
我不知道如何在我的视图中调用折扣方法。我在视图中尝试了以下内容:
<%=discount(current_promo_status)%>
和
<%=products.discount(current_promo_status)%>
我也尝试将方法移动到我的控制器,如下所示:
class StoreController < ApplicationController
include StoreHelper
def discount (current_promo_status)
@discount = product.price3 if current_promo_status == 3
@discount = product.price2 if current_promo_status == 2
@discount = product.price if current_promo_status == 1
end
然后通过在视图中调用它
<%=@discount%>
这样做的正确方法是什么?我相当肯定这很简单,因为我对编程很陌生。