Rails AR记录包括“新的”未保存记录
我有一个’文章’节目动作的观点。
文章有评论。
视图显示:a)文章b)评论c)新评论表
我的控制器的动作是:
def show @article = Article.find(params[:id]) @comments = @article.comments @comment = @comments.new end
视图使用partial显示注释。
循环通过@comments时,我发现列表中还包含来自控制器操作的新记录。 我可以避免使用以下方法显示此行:
...
我这样做错了还是预期的行为?
是的,因为您创建新Comment
是预期的。 在视图中渲染它们之前,您基本上是在@article.comments
添加一个新的空Comment
。 你的解决方案是有道理的,但你也可以通过不将@article
分配给你的控制器show
动作中的新@comment
来避免这个问题。
所以不要使用@comment = @comments.new
而是@comment = Comment.new
。 然后,在@comment
的表单中,您将为article_id
添加一个字段。
<%= f.hidden_field :article_id, :value => @article.id %>
这将允许您在Comment.create
操作中维护关系。