2014-02-24 44 views
0

有帖子,留言&的用戶。我想在帖子展示頁面的評論列表中發佈特定用戶的評論數量。我知道我需要定義@user,但我不知道如何定義它,以便爲每個用戶顯示具體的編號。用戶是評論的作者。未定義的方法`評論'爲零:NilClass - 爲特定用戶列出

後控制器

def show 
    @post = Post.find(params[:id]) 
    @comment = Comment.new 
    @comments = Post.find(params[:id]).comments.order(created_at: :desc) 
    @user = ??? 
end 

郵政/ show動作 - 錯誤是 - @ user.comments.count

<div class="row"> 
<% @comments.each do |comment| %><br> 

<div class="col-sm-4"> <%= link_to comment.user.name, user_path(comment.user) %> <br> 
<%= image_tag(comment.user.smallimage) %><%= @user.comments.count %> 
</div> 

<div class="col-sm-8"> <b><%= comment.title %>:</b> 
<div> 
<% if comment.content.length > 250 %> 
<%= truncate(comment.content, length: 250) %> 
<%= link_to_function '...Read more', "$(this).parent().html('#{escape_javascript comment.content}')" %> 
<% else %> 
<%= comment.content %> 
<% end %> 
</div> 
</div> 
<% end %> 
</div> 
+0

您是否嘗試過@ user = User.find(params [:id]) –

+0

是的,但它表明它找不到id = [id_of_post] – Absurdim

+0

的用戶您可以編輯問題以包含* *用戶是什麼?用戶是該帖子的作者?他們是遊客嗎? – tompave

回答

2

如果您定義了@user,那麼您將只有一個用戶或一組用戶與您的評論無關。你不需要它。你可以使用類似這樣的用戶和評論之間的關係:

<%= comment.user.comments.count %> 

注意,這將運行一個數據庫查詢爲每個評論來獲取該用戶的總評論數。出於性能方面的原因,您可能希望使用counter cache代替。

1

如果定義在後模型belongs_to :user協會則你大概可以做@user = @comment.user

但是,如果是這種情況,那麼你可以從@comment.user.name或其他類似的視圖中調用它。

如果您推送到GitHub,我希望看到整個代碼庫。

+1

是的,如果你定義了關聯,那麼你應該可以從視圖中調用comment.user.name而不會有任何問題。 Rails魔法我的朋友。 –

+0

它被定義爲用戶has_many:評論,評論belongs_to:用戶。錯誤是:@ user.comments.count – Absurdim

+0

你可以發佈GitHub回購?如果你定義了has_many關係,那麼@ user.comments.count應該可以正常工作。你有沒有嘗試我提到的第一個(稍微黑客)解決方案? –

相關問題