在questions / show.html.erb视图中的'question'上显示current_user'likes'的计数

时间:2010-05-20 20:38:28

标签: ruby-on-rails ruby count associations

我有一个应用程序,允许用户创建问题,创建问题的答案,以及“喜欢”其他人的答案。当current_user登陆/views/questions/show.html.erb页面时,我试图为current_user显示该问题的所有答案的总“喜欢”。

在我喜欢的表中,我收集了question_id,site_id和user_id,并且我在用户,问题,答案和喜欢之间设置了适当的关联。我想我只需要以正确的方式调用这些信息,我似乎无法弄明白。以下所有内容均在/views/questions/show.html.erb页面中进行。

我尝试了以下内容:

    <% div_for current_user do %>
        You have liked this question <%= @question.likes.count %> times
    <% end %>

返回问题的所有“赞”但未通过current_user

过滤
You have liked this question <%= current_user.question.likes.count %> times

这给出了'未定义方法'问题'的错误

You have liked this question <%= @question.current_user.likes.count %> times

这给出了'undefined method`current_user'

的错误

我尝试过其他一些东西,但它们对我来说并没有像上面那样有意义。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您可以使用:

<%= @question.likes.count :conditions => {:user_id => current_user.id} %>

或者:

<%= current_user.likes.count :conditions => {:question_id => @question.id} %>

或者将范围添加到Like模型:

named_scope :owner, lambda {|user| {:conditions => {:user_id => user.id} } }

并称之为:

<%= @question.likes.owner(current_user).count %>