2010-07-31 78 views
0

我正在製作留言板應用程序。用戶可以發帖子,每個帖子都需要一個標籤。用戶可以對帖子發表評論。很簡單。我一直在竊取它,並得到了一個我無法解釋的錯誤。我發了一篇文章,message#index顯示了帖子的列表,包括最新的帖子。每個帖子的標題鏈接到消息#show view(這裏沒什麼特別的),並且消息#index上的24個其他帖子可以被點擊以訪問其關聯的消息#show。但不是最近的一個。我收到以下錯誤,當我訪問違規後的消息#顯示:被ActiveRecord控制器擋住的錯誤

Couldn't find Tag with ID=131 

... 

/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1586:in `find_one' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1569:in `find_from_ids' 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:616:in `find' 
/home/vvlist/website/app/controllers/messages_controller.rb:20:in `show' 

messages_controller.rb:20:

@tag = Tag.find(params[:id]) 

我真的不明白是怎麼回事。有人能夠啓發我嗎?我會發布任何其他需要的代碼。感謝您閱讀我的問題。

+1

你能否證實ID爲131標籤實際存在與dbms檢查時? – mark 2010-07-31 08:29:13

+0

它不存在。 – BasicObject 2010-07-31 16:05:54

回答

1

問題是,您正在使用消息ID查找標記。在messages#show動作params[:id]Message模型的標識,而不是標籤。

假設TagMessagehas_one :taghas_many :tags那麼你就可以得到一個消息標記爲使用關聯:

@message = Message.find(params[:id]) 
@tag = @message.tag # has_one 

@tags = @message.tags # has_many 
+0

第一個代碼示例解決了我的問題。非常感謝bjg。 – BasicObject 2010-07-31 16:10:15