use*_*630 3 ruby ruby-on-rails ruby-on-rails-4 money-rails
我正在使用money-rails gem并希望在我的视图中显示不同货币的列表,但我现在的代码不起作用.
我有我的Price模型和领域in_cents和currency:
create_table :prices do |t|
t.integer :in_cents, default: 0, null: false
t.string :currency, default: 'USD', null: false
Run Code Online (Sandbox Code Playgroud)
现在根据Money gem和Money-Rails文档我必须做的事情如下:
class Price < ActiveRecord::Base
monetize :in_cents, as: "amount", with_model_currency: :in_cents_currency
def all_currencies(hash)
hash.keys
end
Run Code Online (Sandbox Code Playgroud)
比我的简单形式宝石的观点:
= f.input :currency, collection: all_currencies(Money::Currency.table)
= f.input :amount, required: false
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
undefined method `all_currencies' for #<#<Class:0xd154124>:0xd15bab4>
Run Code Online (Sandbox Code Playgroud)
为什么?
PS
我想显示ISO代码和名称United States Dollar (USD).
不确定这是最好的解决方案,但我做了一个帮手:
def currency_codes
currencies = []
Money::Currency.table.values.each do |currency|
currencies = currencies + [[currency[:name] + ' (' + currency[:iso_code] + ')', currency[:iso_code]]]
end
currencies
end
Run Code Online (Sandbox Code Playgroud)
小智 2
您的 all_currencies 方法是一个实例方法,并且您没有在实例上调用它。
添加self.all_currencies,然后使用Price.all_currencies
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
2980 次 |
| 最近记录: |