我目前有3个模型,UserModel(设计),ArticleModel和CommentModel。
我和mongoid一起工作。
class Comment
include Mongoid::Document
field :body, type: String
field :created_at, type: Time, default: DateTime.now
belongs_to :article
belongs_to :user
end
class Article
include Mongoid::Document
field :title, type: String
field :body, type: String
field :created_at, type: DateTime, default: DateTime.now
has_many :comments
belongs_to :user
end
class User
include Mongoid::Document
has_many :articles
has_many :comments
end
我的文章/ show.html.haml
.comments-form
.row
.span12
= form_for([@article, @article.comments.build]) do |f|
= f.text_area :body, :class => "span12", :rows => "3", :placeholder => "Your comment here..."
= f.submit nil, :class => "btn"
.comments
- @article.comments.each do |comment|
.comment{:id => "#{comment.id}"}
.row
.span2
= image_tag("260x180.gif", :class => "thumbnail")
.span10
= comment.body
my comments_controller
class CommentsController < ApplicationController
def new
@article = Article.find(params[:article_id])
@comment = @article.comments.create(params[:comment])
@comment.user = current_user
@comment.save
redirect_to article_path(@article, notice: "Comment posted.")
end
end
现在在我的文章/节目中出现了带有id但完全为空的评论,我只是无法弄清楚这个对象来自哪里......
答案 0 :(得分:1)
你的问题在于这一行:
= form_for([@article, @article.comments.build]) do |f|
当您致电@article.comments.build
时,您正在构建新评论并将其添加到@article.comments
。当你迭代你的评论时,你会看到你刚刚创建的那个空洞。
而不是[@article, @article.comments.build]
,请使用[@article, Comment.new]
。