2016-07-25 67 views
0

在我的應用程序中,我用每條語句呈現註釋部分,但得到不尋常的響應。一個空的評論總是在那裏。我正在使用具有物化css的Rails 4。這是怎麼回事looksRails 4 - 在每個語句中返回空值

這裏是我的代碼

<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

空註釋是一直存在的..意味着你會以v空評論iew ..對.. ?? – Vishal

+0

是的,它在視圖中(show.html.erb文件) –

回答

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

+1

而且這很棒,就像一個魅力。謝謝您的幫助。 –

0

您可以通過狀態,防止空評論

if !comment.content.empty? 
    comment.content 
end 

希望它會幫助你。

+0

這什麼都不做。這隻會打印評論內容,如果它不是空的,但我想他想要什麼,如果評論是空的,行不在那裏。 – siegy22

+0

@RaVeN是的..我明白了..但我認爲以不同的方式.. – Vishal

+0

什麼是'不同的方式'?我只是說,這個解決方案不會改變任何東西:) – siegy22

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