我正在尝试创建多态关系并展示它们。
这里是我的人际关系
events
has_many :comments, :as => :commentable
users
has_many :comments, :as => :commentable
comments
belongs_to :comments, :polymorphic => true
评论有以下型号
# commentable_id :integer
# commentable_type :string(255)
现在我的目标将显示在与事件相关的 event#index 项目上,但也会显示所有comments.description 根据每个事件排序
********************* *********************
Event.title Event.title
Event.description Event.description
{Comment.body} {Comment.body}
... ...
********************** **********************
等等。
这是我的控制器
def index
@mosttop = Event.all[1..-1]
@loc = @mosttop.comments
end
但是,如果我这样做,我会得到一个未定义的位置。我想知道我做错了什么。另外,我的路线是遵循
resources :events do
resources :comments do
end
目前我还没有使用构建创建关系,但只是在链接处event/1/comments
创建它
控制器有跟随
def create
@comment = @commentable.comments.new(params[:comment])
...
end
private
def load_commentable
resource, id = request.path.split('/')[1,2]
@commentable = resource.singularize.classify.constantize.find(id)
end
end