Ruby on rails 注释表单显示空白注释,即使数据库为空,rails
我正在我的博客上建立一个评论部分,到目前为止,我已经可以成功地提交评论并将其显示在我的页面上 然而,无论我有10条评论还是数据库是空的,页面上总是有一条空白评论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
*** 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%>