使用Ruby on Rails格式化模型中的文本

时间:2013-05-08 14:21:29

标签: ruby-on-rails ruby ruby-on-rails-4

我如何制作这个MVC?

  class Product < ActiveRecord::Base
    validates :price, :presence => true

    def to_s
      "#{name} at #{number_to_currency(price)}"
    end

  end

我需要将价格格式化为货币,但我不能使用number_to_currency,因为这是在模型中。我可以将视图传递给它,但这感觉不是很干净。

2 个答案:

答案 0 :(得分:2)

解决方案可能是在ProductHelper中定义一个app/helpers模块来实现您想要的方法,比如product_name_with_price

module ProductHelper
  def product_name_with_price(product)
    "#{product.name} at #{number_to_currency(product.price)}"
  end
end

然后在视图中

<%= product_name_with_price(@product) %>

答案 1 :(得分:1)

这违反了MVC,但如果您愿意,可以在模型中使用number_to_currency。您只需要包含ActionView::Helpers::NumberHelper

  class Product < ActiveRecord::Base
    include ActionView::Helpers::NumberHelper
    validates :price, :presence => true

    def to_s
      "#{name} at #{number_to_currency(price)}"
    end

  end