在我的应用程序中,我在每个语句中呈现注释部分,但在其中获得异常响应。一直都有空评论。我使用Rails 4和materialize css。这就是looks喜欢的方式。
这是我的代码
<div class="s12 m7 l8 col">
<ul class="collection with-header">
<li class="collection-header">
<h5>Comment's for you</h5>
</li>
<% @student.comments.each do |comment| %>
<li class="collection-item">
<!-- Content in single row -->
<div>
<%= comment.content %>
<% if comment.user_id == current_user.id || current_user.try(:admin?) %>
<%= link_to [comment.student, comment], method: :delete, data: {confirm: "Are you sure?"}, class: "secondary-content" do %>
<i class="material-icons">delete</i>
<% end %>
<% end %>
</div>
</li>
<% end %>
</ul>
</div>
答案 0 :(得分:0)
您可以传递条件并阻止空注释
if !comment.content.empty?
comment.content
end
希望它会对你有所帮助。
答案 1 :(得分:0)
我认为你不想显示空评论?
将使用此代码生成:
<li class="collection-header">
<h5>Comments for you</h5>
</li>
<% @student.comments.each do |comment| %>
<% if comment.content.present? %>
<li class="collection-item">
<!-- Content in single row -->
<div>
<%= comment.content %>
<% if comment.user_id == current_user.id || current_user.try(:admin?) %>
<%= link_to [comment.student, comment], method: :delete, data: {confirm: "Are you sure?"}, class: "secondary-content" do %>
<i class="material-icons">delete</i>
<% end %>
<% end %>
</div>
</li>
<% end %>
<% end %>
</ul>
我认为更好的方法是在保存之前验证评论。 (见http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_presence_of)
答案 2 :(得分:0)
作为RaVeN mentioned,您的问题可能是缺乏验证。您(可能)的数据库中包含空内容的评论记录。
为了验证您的模型,请查看文档,并写得很好:http://guides.rubyonrails.org/active_record_validations.html
一个例子是:
class Comment < ApplicationRecord
validates :content, presence: true
end
您可能还想添加一些最小/最大文本长度,在这种情况下,您可以将length
哈希作为另一个验证传递:
class Comment < ApplicationRecord
validates :content, presence: true, length: { minimum: 10, maximum: 140 }
end