2016-11-22 100 views
0

我试图实现货币轨和我遇到了以下错误:导轨轨道钱未定义的方法`仙

undefined method `cents' for "1,000.00":String

我跟着this tutorial得到一个‘神奇’的货币输入字段。

DB模式:

t.integer "balance_cents", default: 0,  null: false 
t.string "balance_currency", default: "USD", null: false 

型号:

monetize :balance_cents, as: :balance, allow_nil: :true, :numericality => { :greater_than_or_equal_to => 0} 

def initialize(attributes = {}) 
    super 
    @balance = attributes[:balance] 
end 

形式:

<%= form_for(@asset, url: assets_new_path) do |f| %> 
    <%= f.label :balance, "Balance/Value ($)" %> 
    <%= f.number_field :balance, data: { role: 'money', a_sep: ',', a_dec: '.' }, class: 'form-control' %> 

控制器:

def create 
    @asset = Asset.new(asset_params) 
    if @asset.save 
    flash[:success] = "New asset created successfully." 
    redirect_to assets_path 
    else 
    ... 
    end 
end 

def asset_params 
    params.require(:asset).permit(:balance) 
end 

我是否应该设置另一个(更好)方式的平衡输入字段?

回答

1

根据Rails Guides最好的方法在after_initialize回调中做到这一点。

+0

我删除initialize'的'倍率从我的模型,这似乎已经完成了帽子戏法。我会说实话,我在那里是因为我最初遵循Michael Hartl的铁轨教程,他为他的一个模型做了这个。我不完全明白为什么。 – CChandler81

0

您使用的列,而不是balance_satangs的balance_cents

相关问题