2012-11-22 72 views
0

在我的控制,我有:簡單註釋輸出

def show 
    @entry = Entry.find(params[:id]) 
    @comments = @entry.comments 
end 

現在的觀點:

<% if [email protected]? %> 
    <% @comments.each do |comment| %> 
    <%= comment.id %> 
    <% end %> 
<% end %> 

我知道@comments不是空的,但在這裏我得到@comments.empty? == true 當我if前加<%= @comments %>聲明,一切正常。 empty?false,我收到了評論id。它看起來像查詢獲取評論是在我添加這個新行時運行?任何想法爲什麼以及如何在沒有這個額外的路線的情況下讓它工作?

+0

你能改說嗎?我不明白。 – Intrepidd

+0

基本上,當您在<%if!\ @ comments.empty?之前添加<%= \ @comments%>時, %>行\ @comment數組不是空的,並且有正確的評論記錄。沒有這一行\ @comment數組是空的。 PS。必須逃脫\ @,因爲stackoverflow會像提及的名稱那樣對待它。 –

+0

它的工作原理時,而如果[email protected]?我使用[email protected]? –

回答

4

爲什麼你需要這個聲明呢?

這將工作

<% @comments.each do |comment| %> 
    <%= comment.id %> 
    <% end %> 
+0

謝謝,測試它,你是對的,它的工作原理。任何想法爲什麼「如果版本」沒有? –

+0

它可以是AREL延遲加載,但我認爲它應該在'empty?'調用上獲取記錄。 –

1

切勿使用if !。請使用unless

在這裏你甚至不需要一個空的檢查語句。 .each只有當有一些值時才進行迭代。