0

我正在寻找如何设置我的 :notice 以合并一个辅助方法,目前我有这个并得到“未定义的方法 to_dollars”:

notice: "Thank you for your payment of #{to_dollars(amount)}"

控制器

def create
  @donation = @campaign.donations.create(donation_params)
    if @donation.save_with_payment
      amount = @donation.donation_amount
      redirect_to @campaign, notice: "Thank you for your payment of #{to_dollars(amount)}"
    else
     flash[:notice] = @donation.errors
     render :new
  end
end

我的辅助方法很简单(除非有人有更好的方法)

def to_dollars(amount)
  convert = amount / 100
  number_to_currency(convert, unit: "$", separator: ".", delimiter: "")
end

所有的捐赠金额都以美分保存,因此只想将它们转换为美元。

4

1 回答 1

1

在控制器中使用辅助方法不是一个好习惯,因为辅助方法是 UI 帮助功能的肉。如果你想在控制器中使用这个 to_dallers 辅助方法,那么你可以简单地在控制器中包含辅助模块。

请检查这个答案

如果您必须在控制器中使用此 to_dollers 方法,则可以使用以下任一方法。

  • 您可以在 ActiveRecord consern 或单独的模块中编写此方法,并将其包含在它自己的模型中,以便您可以在对象本身上调用 to_dollers 方法。
  • 您可以将其包含在单独的模块中,例如 AmountUtility 模块,并将此类方法包含在此模块中。然后可以根据需要将此模块包含在任何地方。

希望这可以帮助。

于 2014-06-26T08:43:30.613 回答