2

基本上,该网站的功能允许用户关注其他用户,并且他们还会收到他们关注的用户所做的目击事件的提要。这些目击是从移动应用程序发送的。

一切都按预期工作,除了当我查看用户的个人资料页面(SHOW 操作)时,会显示所有目击事件,包括不是由该用户进行的目击事件。我确定这与我在users_controller.

这是 SHOW 动作:

def show
    @user = User.find(params[:id])
    @sightings = @user.sightings.paginate(page: params[:page], :per_page => 20)
    @birds = Bird.joins(:sightings)
end

这是调用它的视图:

<% if @user.sightings.any? %>
      <ul class="list">
          <% @birds.each do |bird| %>
          <%= render bird %>
          <% end %>       
      </ul>
      <%= will_paginate @sightings %>
<% end %>

我显然缺少连接的基本内容,但在我看来它应该与我拥有的代码一起使用。

4

2 回答 2

3

在您的第三行@birds = Bird.joins(:sightings)中,您将所有目击事件加入所有鸟类。请尝试以下操作:

@birds = Bird.joins(:sightings).where("sightings.user_id = ?", @user.id)
于 2013-05-20T09:50:48.933 回答
0

I might be guessing, but you probably have Sighting#belongs_to :bird association. If it's the case I would prefer:

@birds = @users.sightings.map(&:bird)
于 2013-05-20T14:45:37.857 回答