我的模型中有一个fee
列,它是一个整数类型,所以我尝试创建一个小帮手,在前面整齐地添加一个美元符号。这意味着,而不是写作:
span = "$#{@object.fee}"
我可以写类似
的内容span = @object.fee.dollar
所以我创造了一个小帮手。
module ApplicationHelper
def self.dollar
"$#{self.try(:to_s)}"
end
end
我不知道该把它放在哪里,所以基本上它现在正在显示
未定义的方法`美元' 180:Fixnum
答案 0 :(得分:2)
<强> number_to_currency()强>
Rails 4.2有这个ActionView :: Helper
number_to_currency(1234567890.506)
<强>辅助强>
如果你想把它作为助手来实现,那就可以了。
module ApplicationHelper
def dollar(amount)
amount = number_to_currency(amount)
end
end
<强>调用强>
<%= dollar(your_var_here) %>
对number_to_currency()的Rails规范
http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency
注意:其他版本的Rails可能具有此功能,您必须检查您的版本。
答案 1 :(得分:0)
您的助手包含在视图上下文中,因此您需要进行两项更改:
def dollar
- 因为它包含在渲染器中,您不需要self
dollar(@object.fee)
- 它不包含在对象中,但在您的视图中。如果要将其称为@object.dollar
,请在任何类@object
中声明该方法。此外,number_to_currency助手已经存在且非常强大。也许你想用它。
答案 2 :(得分:0)
module ApplicationHelper
def dollar(amount)
"$#{amount}"
end
end
然后:
span = dollar @object.fee
答案 3 :(得分:0)
我认为这是因为你是帮助者,所以你不能引用self
。
您可以在模型中或帮助程序中执行此操作:
def print_dollar(your_value)
或者,您也可以使用:number_to_currency(dollar, :unit => "$")
,它会以您想要的方式呈现它。
希望有所帮助