Rails创建一个帮助来添加文本

时间:2015-06-13 16:06:17

标签: ruby-on-rails

我的模型中有一个fee列,它是一个整数类型,所以我尝试创建一个小帮手,在前面整齐地添加一个美元符号。这意味着,而不是写作:

span = "$#{@object.fee}"

我可以写类似

的内容
span = @object.fee.dollar

所以我创造了一个小帮手。

module ApplicationHelper
    def self.dollar
        "$#{self.try(:to_s)}"
    end
end

我不知道该把它放在哪里,所以基本上它现在正在显示

  

未定义的方法`美元' 180:Fixnum

4 个答案:

答案 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)

您的助手包含在视图上下文中,因此您需要进行两项更改:

  1. def dollar - 因为它包含在渲染器中,您不需要self
  2. 将其称为dollar(@object.fee) - 它不包含在对象中,但在您的视图中。如果要将其称为@object.dollar,请在任何类@object中声明该方法。
  3. 此外,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 => "$"),它会以您想要的方式呈现它。

希望有所帮助