这让我疯狂。我有 3 个模型。用户,照片,评论。
这就是我想要做的。
一个用户有很多照片和评论
一张照片属于一个用户,有很多评论
评论属于用户和照片
所以我的模型有这些关联:
用户
has_many :photos, :dependent => :destroy
has_many :comments, :dependent => :destroy
照片
belongs_to :user
has_many :users, :through => :comments
has_many :comments, :dependent => :destroy
评论
belongs_to :photo, :user
我现在想显示一张照片并加载这张照片的所有评论,并用用户信息显示每条评论。
所以在照片控制器显示我有的动作
@photo = Photo.find(params[:id], :include => :comments, :order => 'comments.created_at DESC')
在照片/显示视图中
=render :partial => "/comments/partials/comment", :collection => @photo.comments, :as => :comment
它显示评论,例如。评论文本很好,但在部分内容中我尝试这样做:
%p=comment.user.fname
%p=comment.body
它抛出错误“nil:NilClass 的未定义方法‘fname’”
奇怪的是,我是用户 authlogic,所以您必须登录才能发表评论。但是即使您没有登录,您也可以看到评论。当我注销时,它可以找到。当我登录时,它会引发错误。
任何帮助将不胜感激,因为它让我发疯。
顺便说一句,在我的路线中,我有
map.resources :users, :has_many => [:photos, :comments]
map.resources :photos, :has_many => [:comments, :users]
谢谢