多态关联错误

时间:2012-03-01 12:09:21

标签: ruby-on-rails

我正在使用多态关联。

我有2个模型文章和事件,它们与使用多态关联的评论模型has_many关联

内部评论控制器:

def index

  @commentable = find_commentable

  @comments = @commentable.comments

end

def find_commentable

  params.each do |name, value|

    if name =~ /(.+)_id$/

      return $1.classify.constantize.find(value)

    end

  end

  nil

end

我写的内部文章和事件模型:

has_many :comments, :as => :commentable,:dependent => :destroy

内部评论模型:

belongs_to :commentable, :polymorphic => true

内部路线:

resources :articles do
resources :comments

end

我的问题是

1)当我输入http://localhost:3003/articles/8/comments时,它会出现以下错误:

undefined method `comments' for nil:NilClass

2)另外我不想使用嵌套路由,我想使用简单的路由。我怎样才能实现与此代码相同的功能?

1 个答案:

答案 0 :(得分:0)

  1. 您收到此错误是因为@commentable为零。你有一篇ID为8的文章吗? find_commentable函数是否正确返回可评论?我的猜测是这两个问题之一的答案是“不”。

  2. 如果你不想要嵌套路由,你可以只做resources :comments,但你应该确保将commentable_type和commentable_id作为参数传递给控制器​​;否则你将无法查找可评论的课程以获得其评论。