我有在我的觀點一個與下面的代碼的問題:NoMethodError「未定義的方法`電子郵件」的零:NilClass」
<% @blog.comments.each do |comment| %>
<h3><%= comment.user.email %></h3>
</div>
<% end %>
這是產生一個錯誤:
NoMethodError in Blogs#show
...
undefined method `email' for nil:NilClass
然而,下面的代碼工作沒有錯誤:
<% @blog.comments.each do |comment| %>
<%= comment.body %>
<% end %>
評論被聲明爲:
class Comment < ActiveRecord::Base
belongs_to :blog
belongs_to :user
end
和電子郵件屬性是另一個視圖訪問:
<% @users.each do |user| %>
<tr>
<td><%= link_to user.username, user %></td>
<td><%= user.email %></td>
</tr>
<% end %>
對我來說,它看起來像comment.user沒有被承認爲用戶模型的實例。我究竟做錯了什麼?
更合適的是,您可能需要確保在沒有用戶的情況下評論不存在,使用驗證或沿着這些行的內容。上面的代碼將防止錯誤顯示,但我認爲你所看到的是應用程序中管理數據的更大失敗的症狀。 – karmajunkie 2011-06-13 12:35:57
謝謝,這工作!但是,不知道爲什麼,因爲在DB中只有三條評論,並且它們都與相同(有效)的用戶相關聯。 是的,我一定會添加一些驗證。 – 2011-06-13 12:39:33
@karmajunkie是對的。我的解決方案解決了症狀,而不是原因。 – Teddy 2011-06-13 13:12:33