2010-07-31 80 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