ruby-on-rails – 如何正确使用money gem和表单构建器?

我有型号产品,字段price_cents和price_currency.货币认货币是美元.

模型:

class Product < ActiveRecord::Base
  CURRENCIES = %w(USD EUR)

  composed_of :price,:class_name => "Money",:mapping => [%w(price_cents cents),%w(price_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") }
end

形成:

= form_for @product do |f|
  = f.label :price
  = f.text_field :price
  = f.select :price_currency,Product::CURRENCIES

  = f.submit

控制器创建方法:@product = Product.new(params [:product])

问题:当用户将price字段设置为100并将price_currency设置为EUR时,它会使用认货币(USD)创建价格.我该怎么办呢?是可以在视图中执行它还是我应该在控制器中执行它(例如@ product.price.currency = …)?

解决方法

我遇到过同样的问题. Setting currency with form select with Money gem

通过在create方法添加一行来解决它.检查上面的主题,让我知道你需要进一步的帮助.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...