Ruby on rails 注释表单显示空白注释,即使数据库为空,rails

Ruby on rails 注释表单显示空白注释,即使数据库为空,rails,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正在我的博客上建立一个评论部分,到目前为止,我已经可以成功地提交评论并将其显示在我的页面上 然而,无论我有10条评论还是数据库是空的,页面上总是有一条空白评论 *** views/artist/lyrics/show.html.erb *** <%= form_for(@lyric.comments.build, url: artist_album_lyric_comments_path(@artist, @album, @lyric)) do |f| %> <%= f

我正在我的博客上建立一个评论部分,到目前为止,我已经可以成功地提交评论并将其显示在我的页面上

然而,无论我有10条评论还是数据库是空的,页面上总是有一条空白评论

*** views/artist/lyrics/show.html.erb ***

<%= form_for(@lyric.comments.build, url: artist_album_lyric_comments_path(@artist, @album, @lyric)) do |f| %>
  <%= f.text_area :content %>
  <%= f.submit "comment" %>
<% end %>
<% if @lyric.comments.any? %>
  <% @lyric.comments.each do |comment| %>
    <%= comment.username %>
    <%= comment.content %>
  <% end %>
<% else %>
  No one has commented.
<% end %>


*** /controllers/users/comments_controller.rb ***

def create
  @comment = Comment.new(comment_params)
  @comment.user_id = current_user.id
  @comment.username = current_user.username
  @comment.lyric_id = Lyric.friendly.find(params[:lyric_id]).id
  if @comment.save
    redirect_to (:back)
  else
    redirect_to root_url
  end
end
***视图/艺术家/歌词/show.html.erb***
没有人发表评论。
***/controllers/users/comments\u controller.rb***
def创建
@comment=comment.new(comment_参数)
@comment.user\u id=当前用户id
@comment.username=当前_user.username
@comment.lyric\u id=lyric.friendly.find(params[:lyric\u id]).id
if@comment.save
将_重定向到(:返回)
其他的
将\u重定向到根\u url
结束
结束
注释模型是嵌套的,我认为这与此有关。这是艺术家=>
专辑
=>
歌词
=>
评论


当我从页面中删除注释窗体时,空白注释消失,<代码> <代码>语句运行。

在您的代码> Fuffy中< < /Cult>标签>中,您在<代码> @歌词> /代码>中建立了<代码>注释< /代码>。我相信这会在你打电话给
@lyric.comments
之后立即显示出来。尝试:

<% @lyric.comments[0..-2].each do |comment| %>

这将从第一个到第二个再到最后一个抓取所有的
注释(基本上除了您刚刚创建的新注释)

编辑:


同时将
更改为

我以前在代码中使用过这个。试试这个:

<% @lyric.comments.each do |comment| %>
    <% next if comment.new_record? %>
    <%= comment.username %>
    <%= comment.content %>
<% end %>

我更改了这一行:

致:


运行EXCEL语句,并删除页面上的新记录。< /P>是,它确实去掉了空白注释,但它不允许<代码> <代码>语句运行。OK,然后将<代码> <代码>改为<代码> <代码>。这应该告诉您,如果第一条记录是新记录,那么就不应该考虑它。或者,重构为“没有人评论”。作为第一个块,将

更改为
——然后将注释呈现块放在else块中。与我的代码类似,但是
else
语句将永远不会运行,因为总会有
注释。我只是觉得这更容易输入,而且它的功能非常冗长。对于else不开火的问题,我建议
1%>