2012-03-23 5 views
0

나는 부분 집합의 이질적인 컬렉션을 갖는 방법을 찾기 위해 머리를 터벅 터벅 걷고있다.부분 집합의 이기종 컬렉션

<%= render :partial => 'shared/feed_item', :collection => @feed_items %> 

@feed_promos의 부분 지문이 다른 클래스의 객체 ("홍보"클래스 : 나는 (이하 "트윗"클래스) @feed_items라는 부분 지문의 수집 및 그것 하나 개의 클래스를 위해 큰 일을 나열 이것을 사용) 그리고 그들은 feed_item partial과 같은 '공유'디렉토리에 있습니다. 누구든지 컬렉션에서 @feed_promo와 @feed_item을 모두 가지고있는 코드를 알고 있습니까?

나는 레일 3 바로 가기를 사용하여이 단순화하기 위해 노력했다 :

<%= render [feed_items, feed_promos] %> 

을하지만이 트윗 모델에 대한 템플릿을 찾을 것으로 예상하지만 거기 때문에 오류가 나는 부분 지문의 컬렉션을 원하는 (Tweets와 같은) 다른 클래스의 객체가 아닙니다. 난 이미 relationship.rb 및 tweet.rb에 갔다와 포함했다 :

def to_partial_path 'shared/' 

답변

0

tweets/_tweet.html.erb 각각 당신의 파셜을 넣고 컨트롤러에서

promotions/_promotion.html.erb은 단일 수집합니다

@feed = @feed_items + @feed_promos 

보기에 :

<%= render @feed %> 
+0

불행히도 그것은 작동하지 않았습니다. +는 컨트롤러에서 인식되지 않았으므로 '&&'로 변경했습니다. 그게 맞습니까? 또한 '_tweet.rb'가 아닌 부분 이름의 '_tweet.html.erb'을 의미합니까? 이러한 변경 작업을 시도했지만 여전히 페이지에서 ArgumentError가 발생했습니다. 'nil'은 유효한 부분 경로를 반환하는 ActiveModel 호환 개체가 아닙니다. – Tim

+0

확장 프로그램의 실수로 죄송합니다. 수정되었습니다. '@ feed_items'과'@ feed_promos'의 종류는 무엇입니까? '+'연산자는 하나의 배열을 두 개 병합합니다. 그것은 내 컴퓨터에서 잘 작동합니다. '&&'는 잘못되었습니다. 이것은 논리적 AND이고 nil 또는 두 번째 피연산자를 반환합니다. '@ feed'가'Array'가 아니고'nil'이기 때문에 에러가납니다. –