Money-Rails宝石 - 用符号显示人性化的钱

时间:2015-05-10 02:00:28

标签: ruby-on-rails money-rails

我试图在我的Rails 4应用程序中使用Money-Rails。

我有一个参与者模型,其属性如下:

t.boolean  "costs"
t.integer  "participation_cost_pennies",  default: 0,     null: false
t.string   "participation_cost_currency", default: "GBP", null: false

用户可以选择他们的货币,并且应该覆盖默认的GBP设置。

我的观点,我有:

<% if @project.scope.try(:participant).try(:costs) == true %>
           <%=  @project.scope.try(:participant).try(humanized_money_with_symbol :@participation_cost_pennies) %>

当我尝试上述操作时,视图显示空白(不显示任何内容)。当我尝试在谷歌浏览器中检查元素时,我只能看到一个空的span标记,其中列出了该代码(没有任何内容)。

我之前尝试了以下内容,它显示了便士的价格(如6美元为600美元:

      <%=  "#{@project.scope.try(:participant).try(:participation_cost_pennies)} #{@project.scope.try(:participant).try(:participation_cost_currency)}" %>

谁能看到我做错了什么?我想要显示4美元而不是400美分/便士。

谢谢

1 个答案:

答案 0 :(得分:1)

humanized_money_with_symbol是帮助者,因此您可以使用humanized_money_with_symbol @money_object形式使用它。

在你的情况下,这意味着你会像这样使用它:

<%=  humanized_money_with_symbol @project.scope.try(:participant).try(:participation_cost_pennies) %>

所有try所做的就是对你链接的对象调用一个方法,如果它不存在则返回nil。您正在做的是在参与者名为humanized_money_with_symbol的方法上调用:@participation_cost_pennies,该方法不存在,因此try最终返回nil