2014-04-30 84 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配置的關係,你應該添加一個方法來Post模型,是這樣的:

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

然後你可以從你的看法,他呼籲post.get_category將爲您處理查詢。

+0

當我在後置控制器上添加方法時,它給出了「帖子#索引中的錯誤NoMethodError」。我還完成了發佈和分類模型(在發佈belongs_to:分類和類別has_many:發佈)中的關係。 – user3349724

+0

你的意思是說你將它添加到Post模型中?如果您將其添加到控制器,它將不會工作。但是,如果你的關係設置正確,你不應該做任何事情,你應該可以做'post.category.category'。我建議將類別的名稱改爲'name',調用'@ category.category'就是那種會給你帶來問題的東西。 – subvertallchris