Rails 4 - 在每个语句中返回空值
Rails 4 - Returning empty value in each statement
在我的应用程序中,我在每个语句中呈现评论部分,但在其中得到了不寻常的响应。空评论总是在那里。我正在使用 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>
可以通过条件,防止空评论
if !comment.content.empty?
comment.content
end
希望对您有所帮助。
我猜你不想显示空评论?
将使用以下代码生成:
<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)
作为,您的问题可能是缺乏验证。您(可能)在您的数据库中有一条内容为空的评论记录。
为了验证您的模型,请查阅文档,写得很好: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
在我的应用程序中,我在每个语句中呈现评论部分,但在其中得到了不寻常的响应。空评论总是在那里。我正在使用 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>
可以通过条件,防止空评论
if !comment.content.empty?
comment.content
end
希望对您有所帮助。
我猜你不想显示空评论?
将使用以下代码生成:
<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)
作为
为了验证您的模型,请查阅文档,写得很好: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