2014-04-30 2 views
1

각 범주를 이름으로 표시하려고합니다. 게시물 및 카테고리 모델이 있고 각 게시물에는 하나의 카테고리 만 있습니다.ActiveRecord .find() 메서드가 실패합니다.

이 작동 : <% @category = Category.find(3) %>

이 실패 <% @category = Category.find(post.cat_id) %>

내 오류 : Couldn't find Category with id= ".

내보기 블록 :

<% @posts.each do |post| %> 
    <%= post.title %> 
    <% @category = Category.find(post.cat_id) %> 
    <%= @category.category %></td> 
<% end %> 

답변

0

당신은 이제까지의 <% @category = Category.find(post.cat_id) %> 같은 질의를하지 말아야 할 당신의 전망. 방금 post.category를 호출 할 수있는 방식으로 구성된 관계가없는 경우, 당신은 포스트 모델에 메소드를 추가한다, 무언가 같이 :

def get_category 
    Category.find(self.category_id).category 
end 

그럼 당신은보기와 그것에서 post.get_category를 호출 할 수 있습니다 당신을 위해 쿼리를 처리합니다.

+0

게시물 컨트롤러에 메소드를 추가하면 "Post # index에 NoMethodError 오류가 발생합니다"라고 표시됩니다. 나는 또한 게시물 b/w 게시물 및 범주 모델 (게시물 belongs_to : 범주 및 범주 has_many : 게시물). – user3349724

+0

포스트 모델에 추가했다는 뜻입니까? 컨트롤러에 추가 한 경우 작동하지 않습니다. 그러나 당신의 관계가 올바르게 설정 되었다면 그렇게 할 필요는 없습니다. 여러분은'post.category.category'를 할 수 있어야합니다. 카테고리의 이름을'name'으로 변경하고'@category.category'를 호출하면 문제가 발생할 수 있습니다. – subvertallchris

관련 문제