как получить символ из money gem

#ruby-on-rails #ruby-on-rails-3 #currency

#ruby-on-rails #ruby-on-rails-3 #Валюта

Вопрос:

Я использую money gem для представления денежных полей в моей модели продукта. Вот мой код:

Модель продукта:

           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") }
  
  • В моей модели есть такие поля, как currency в виде строки и price в виде строки.

Я просматриваю свою форму:

  <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
  

Комментарии:

1. Под символом вы подразумеваете $ для доллара и аналогично для INR?

2. да, верно …. но я решил проблему

3. @AnidhyaAhuja Не могли бы вы упомянуть, как вы решили проблему?

4. @SwatiAggarwal решение упомянуто чуть ниже вопроса. Я должен был получить символ вместе с другими атрибутами в помощнике.