2012-02-29 7 views
0

...중첩 된 양식 항목에 대해 계산을 수행하는 방법은 무엇입니까?

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

Item에 클래스 메서드를 만들었습니다. 원하는 메서드가 인스턴스 메서드라고 생각하면됩니다.

class Item < ActiveRecord::Base 
    belongs_to :invoice 

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

@invoice.items.total

: 당신은 당신이 당신에게 모든 항목의 합계를 할 경우, 당신이 뭔가를해야 할 것, 개별 항목 @item.total에 전화를하거나 할 수

class Item < ActiveRecord::Base 
    belongs_to :invoice 

    def total 
    price * quantity 
    end 
    ... 
end 

희망이 도움이됩니다.

+0

감사하지만이 두 모델에 게시되는 중첩 된 양식에서 작동하도록 가져올 수 없습니다. 그것은 당신이 말한 것처럼 그것을 정의 했음에도 "전체"라는 방법이 없다는 것을 계속 알려줍니다. – Tintin81

+0

OP를 편집하여 총 호출하려는 개체를 표시하십시오. – TheDelChop

+0

좋아요, 아마 문제를 잘 설명하지 않았을 것입니다. 나는 방금 내 질문을 다시 게시 [여기] (http://stackoverflow.com/questions/9505453/how-to-call-a-method-on-an-object-in-a-nested-form-in-ruby -on-rails-3). – Tintin81

관련 문제