2011-03-23 4 views
0

이 내 협회 위치 :필터 - 레일 3

class Activity < ActiveRecord::Base 

    has_many :infos, :dependent => :destroy 
    has_many :events, :dependent => :destroy 
    accepts_nested_attributes_for :infos 

end 

class Event < ActiveRecord::Base 

    belongs_to :activity 
    has_many :infos, :through => :activity 

end 

class Info < ActiveRecord::Base 

    has_one :language 
    belongs_to :activity 

end 

지금 내가 모든 이벤트와 함께 XML을받을 수 있으며, 자신의 정보를 정기적으로 사용 :

@Events = Event.all

respond_to do |format| 
    format.xml { render :xml => @events.to_xml(:include => [:infos ]) } 
end 

문제는 모든 언어의 정보를 얻을 수 있다는 것입니다.

각 이벤트에 대해 language1 정보 만 XML에 표시되도록 필터 ("info.language.id == 1"과 같이)를 사용할 수 있습니까?

감사

UPDATE :

안녕 마이크, 당신의 대답을 주셔서 감사합니다.

undefined method `eq' for nil:NilClass Rails.root: /Users/abramo/village

Application Trace | Framework Trace | Full Trace app/controllers/events_controller.rb:29:in block (2 levels) in locale' app/controllers/events_controller.rb:28:in locale'

과 선 (28, 29) 내 로케일 방법의 마지막 줄은 다음과 같습니다 :

def locale 
    @events = Event.joins(:infos => :language).where("languages.id = 2") 

    respond_to do |format| 
     format.xml { render :xml => @events.to_xml(:include => [:infos ]) } 
    end 
    end 

난 정말 이해가 안 ... 무엇을

불행하게도 나는이 오류를 받고 있어요 개체가 Nil입니까?

답변

1
Event.joins(:infos => :language).where("languages.id = 1") 
+0

답장을 보내 주셔서 감사합니다. 문제는 아직 해결되지 않았습니다. (내 업데이트 된 게시물을 좀 봐) – Abramodj