Беда с виртуальным атрибутом для платежей

В настоящее время я пытаюсь преобразовать мое поле price_in_cents в виртуальный атрибут price_in_dollars. Я провел небольшое исследование и в основном реализовал все, начиная с видео о виртуальных атрибутах railscast, по ссылке ниже

https://www.youtube.com/watch?v=Tr7tD2GPiXU

Сначала столбец в моей базе данных был "сумма" для денежного поля. Итак, я побежал

$ rails g migration add_price_in_cents_to_payments price_in_cents:integer

затем,

$ rake db:migrate

Мое приложение - это просто базовая платформа CRUD для создания новых платежей.

Я добавил методы метода получения в payment.rb файл, вроде так.

 class Payment < ActiveRecord::Base
 attr_accessible :amount, :price_in_dollars, :from, :to
 # The price_in_dollars attribute is taking the place of :amount

 def price_in_dollars
   price_in_cents.to_d/100 if price_in_cents
 end

 def price_in_dollars=(dollars)
   self.price_in_cents = dollars.to_d*100 if dollars.present?
 end
end

И изменил поле формы для представления нового атрибута price_in_dollars.

<div class="field">
  <%= f.label :price_in_dollars %><br />
  <%= f.text_field :price_in_dollars %>
</div>

Но теперь, когда я отправляю новый платеж, он возвращает NoMethodError для моих методов "new" и "create" в контроллере платежей. В видео Бейтс даже не трогает свой контроллер. Вот мой контроллер.

def new
    @payment = Payment.new

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @payment }
  end
end

# GET /payments/1/edit
def edit
    @payment = Payment.find(params[:id])
end

# POST /payments
# POST /payments.json
def create
    @payment = Payment.new(params[:payment])

  respond_to do |format|
    if @payment.save
      format.html { redirect_to @payment, notice: 'Payment was successfully created.' }
      format.json { render json: @payment, status: :created, location: @payment }
    else
      format.html { render action: "new" }
      format.json { render json: @payment.errors, status: :unprocessable_entity }
    end
  end
end

Нужно ли указывать, чтобы передать в (params[:price_in_dollars]) во всех моих методах CRUD в контроллере? Я новичок только с 3 неделями знания рельсов. Пожалуйста, помогите в любом случае возможно.

0 ответов

Другие вопросы по тегам