2011-01-30 3 views
0

나는 내 웹 사이트의 모든 기사를 반환 된 컨트롤러를했다을루비 (: 정의되지 않은 메서드`MODEL_NAME '을 배열에 대한 : 변수 클래스) 배열을 동봉 반환 수집

@articles = Article.find(all) 

및 렌더링에 사용되는 부분 @articles 배열.

나는 내 컨트롤러를 변경 : 그래서 나는이 문제를 내가 발견 레일 콘솔 검사 후뿐만 아니라

다른 데이터를 반환 할 수 있습니다

@articles = User.find(1).topics.map { |t| t.articles } 

그 수집의 출력 배열 Article.find (모든) 발견의

출력 배열 (모두)

[#<Article id: 1, user_id: 2, title: "test">] 
일치하지 않습니다 나는 parcial을 렌더링하기 위해 노력하고있어 때 수집

[[#<Article id: 1, user_id: 2, title: "test">]] 

출력 배열 내가 얻을 :

variable:undefined method `model_name' for Array:Class 

내 색인 다음

<%= render :partial => @articles%> 

과 parcial :

<%= link_to_unless_current h(article.title), article %> <%= h(article.body) %> 

배열의 이중 대괄호 [[]]로 문제를 극복하는 방법을 알고 있습니까? D

t.articles 반환 당신이 기사의 모음 :

답변

1

먼저, 첫 번째 줄에, 나는 당신이 :all 대신 all해야 오타가 있다고 생각.

그래서 map {|t| t.articles}은 기사 모음 (배열 배열) 컬렉션을 제공합니다.

이 작업을 시도 할 수 :

@articles = User.find(1).topics.map { |t| t.articles }.flatten.uniq 
# uniq if an article could belongs to two or more topics. Otherwise it is not needed. 
+0

을'대신'all' ... 문제의 all' ..? – PeterWong

+0

요점은 flatten.uniq 일했습니다! 추가해 주셔서 감사합니다 !! – Sharethefun

+0

오 .. 마침내 깨달았습니다 ... 예, 맞습니다 ~! – PeterWong

관련 문제