Беда с виртуальным атрибутом для платежей
В настоящее время я пытаюсь преобразовать мое поле 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 неделями знания рельсов. Пожалуйста, помогите в любом случае возможно.