составе_от & полей_для - PullRequest
1 голос
/ 09 июля 2010

Итак, я прочитал и перечитал статью Стивена Чу по этой теме (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 как «центы», но, согласно статье, он должен использовать атрибуты «количество» в параметрах формы. Я просто застрял: /

1 Ответ

0 голосов
/ 01 февраля 2011

Редактировать: Я неправильно понял ваш вопрос раньше. Да, в ваших формах вам нужно указать amount следующим образом:

- form_for @payment do |p|
   = a.label :dollars
   = a.text_field :amount
   = a.label :currency
   = a.text_field :currency, :value => :usd
...