Итак, я прочитал и перечитал статью Стивена Чу по этой теме (http://www.stephenchu.com/2008/05/rails-composedof-validation.html),, однако мне просто не повезло.
В соответствии с примером, приведенным в документации по денежному камню money.rubyforge .org
Модель
class Payment < ActiveRecord::Base
composed_of :amount,
:class_name => "Money",
:mapping => [%w(cents cents), %w(currency currency_as_string)],
:constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) }
end
Хороший тощий контроллер
class PaymentsController < ApplicationController
def create
@payment = Payment.new(params[:payment])
...
end
end
Вид (HAML)
- form_for @payment do |p|
- p.fields_for :amount, @payment.amount do |a|
= a.label :cents
= a.text_field :cents
= a.label :currency
= a.text_field :currency, :value => :usd
Я получаю ошибку:
undefined метод `cents 'для {" cents "=>" 6.66 "," currency "=>" usd "}: HashWithIndifferentAccess
Хэш «количество» передается в compome_of как «центы», но, согласно статье, он должен использовать атрибуты «количество» в параметрах формы. Я просто застрял: /