我试图在我的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美分/便士。
谢谢
答案 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