如何从金钱宝石获得符号

时间:2011-11-07 12:29:27

标签: ruby-on-rails ruby-on-rails-3 currency

我使用money gem代表我的Product模型中的money字段。 这是我的代码:

产品型号:

          composed_of :price, 
          :class_name => "Money",
          :mapping => [%w(price cents), %w(currency currency_as_string)],
          :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) },
          :converter => Proc.new { |value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }
  • 我的模型中包含货币字符串和价格字符串等字段。

我的表单视图

 <li>
  <%= f.select(:currency,all_currencies(Money::Currency::TABLE), {:include_blank => 'Select a Currency'}, :class => "styled" )%>
 </li>

在我的产品帮助

def all_currencies(hash)
    hash.inject([]) do |array, (id, attributes)|
      array ||= []
      array << [attributes[:name], attributes[:iso_code]]
      array
    end
  end
  • 当我尝试在我看来打印product.currency时,我得到了正确的货币。例如对于印度卢比,我得到了INR。但我不知道如何从中获取符号。
  • 我尝试使用product.symbol以及product.currency.symbol,但我得到了“未定义的方法符号”

非常感谢任何帮助。

=====解决方案:====

在我的帮助方法中,我需要在数组中获得[:symbol]属性..

def all_currencies(hash)
    hash.inject([]) do |array, (id, attributes)|
      array ||= []
      array << [attributes[:name], attributes[:iso_code],attributes[:symbol]]
      array
    end
  end

0 个答案:

没有答案