我正在使用多态关联。
我有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)另外我不想使用嵌套路由,我想使用简单的路由。我怎样才能实现与此代码相同的功能?
答案 0 :(得分:0)
您收到此错误是因为@commentable为零。你有一篇ID为8的文章吗? find_commentable函数是否正确返回可评论?我的猜测是这两个问题之一的答案是“不”。
如果你不想要嵌套路由,你可以只做resources :comments
,但你应该确保将commentable_type和commentable_id作为参数传递给控制器;否则你将无法查找可评论的课程以获得其评论。