2010-07-09 3 views
1

Так что я прочитал & перечитал статью Стивена Чу по теме (http://www.stephenchu.com/2008/05/rails-composedof-validation.html), однако мне просто не повезло.created_of & fields_for

За примере на условии в деньги гем документация 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 

View (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 

Ошибка я получаю это: неопределенный метод `центов для { "центов"=> "6,66", "валюта"=> "USD"}: HashWithIndifferentAccess

'Величина' хэш передается в состав как «центы», но, согласно статье, он должен использовать атрибуты «количество» в параметрах из формы. Я просто застрял:/

ответ

0

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

- form_for @payment do |p| 
    = a.label :dollars 
    = a.text_field :amount 
    = a.label :currency 
    = a.text_field :currency, :value => :usd 
Смежные вопросы