Как выполнить вычисления для вложенных элементов формы? - PullRequest
0 голосов
/ 29 февраля 2012

Я довольно новичок в Rails, и у меня есть эти две модели ...

class Invoice < ActiveRecord::Base
  has_many :items      
  accepts_nested_attributes_for :items
  ...
end

class Item < ActiveRecord::Base
  belongs_to :invoice

  def self.total
    price * quantity
  end
  ...
end

... и вложенная (!) Форма, которая создает новые записи счетов-фактур и связанные с ними элементы.

Однако мне очень сложно проводить расчеты по этим пунктам. Например, рядом с каждым элементом я хотел бы поставить total для этого элемента, используя метод total, описанный выше.

К сожалению, это не работает. В своей форме я ставлю это рядом с каждым элементом:

<%= @invoice.items.amount %>

который получен из моего контроллера:

def new      
  @invoice = Invoice.new
  3.times {@invoice.items.build}
end

Он продолжает выдавать ошибку, говоря: undefined local variable or method price

Что мне здесь не хватает ??

Спасибо за любую помощь.

1 Ответ

1 голос
/ 29 февраля 2012

Вы создали метод класса для Item, когда я думаю, что вам нужен метод экземпляра.

class Item < ActiveRecord::Base
  belongs_to :invoice

  def total
    price * quantity
  end
  ...
end

, который вы можете вызвать для отдельного элемента @item.total или, если вы сделаете это,всего предметов, то вам нужно будет сделать что-то вроде этого:

class Item < ActiveRecord::Base
  belongs_to :invoice

  def self.total
    all.collect { |item| item.price * item.quantity }
  end
  ...
end

@invoice.items.total

Надеюсь, что поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...