Rails 4 - 在每个语句中返回空值

时间:2016-07-25 08:21:43

标签: ruby-on-rails ruby-on-rails-4 materialize

在我的应用程序中,我在每个语句中呈现注释部分,但在其中获得异常响应。一直都有空评论。我使用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>

3 个答案:

答案 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