Дело в том, что проблема в том, что количество и цена напитка не были установлены. Часть решения исходит от Wizard of Ogz. Факт в том, что попытка решить «ноль не может быть приведен в BigDecimal», я получаю решение на эту проблему тоже. Так вот решение
1-app / models / drink.rb aka child model Примените к self.quantity и self.price метод, который преобразует их в строку (to_s), а затем в большой десятичный код (to_d).
class Drink < ActiveRecord::Base
belongs_to :menu
before_save :total_amount
def total_amount
self.quantity.to_s.to_d * self.price.to_s.to_d * 1.30
end
end
2-app / models / drink.rb ака детская модель проверяет наличие цены и количества перед сохранением их в базу данных
class Drink < ActiveRecord::Base
belongs_to :menu
before_save :total_amount
validates :price, :presence => true
validates :quantity, :presence => true
def total_amount
self.quantity.to_s.to_d * self.price.to_s.to_d * 1.30
end
end
3-приложение / views / menus / show.html.erb или родительская модель
Просто примените метод total_amount к модели dink или дочерней (вложенной) следующим образом:
<td><%=number_to_currency(drink.total_amount) %> </td>
Спасибо Волшебнику Огза , Митчу Демпси , Сосборну и Мише М.