显示关注者和关注人员列表

时间:2013-02-27 14:36:57

标签: ruby-on-rails ruby loops gem

地狱全部,

我正在使用名为socialization(https://github.com/cmer/socialization

的ruby gem

我有它工作,我能够关注和取消关注用户,看看有多少人关注或跟随任何用户。问题是,当我想输出关注者的用户名和关注时,它只适用于user1,而对于用户2-4,它将根据有多少关注者按顺序显示用户名。如果表是

  • user1 follow =>用户2
  • user2 follow =>用户3

我要求用户3的关注者(知道user3为1个关注者)它会打印出User1而不管(我希望这是有意义的)

这是我的代码:

UsersController中的关注者方法

def followers
     @user = User.find(params[:user])
     @followers = @user.followers(User)
     @users = User.all

     response = {:user => @user, :followers => @followers, :users => @users}

     respond_to do |format|
      format.html  #followers.html.erb
      format.xml {render :xml => response}
    end
end

在UsersController中使用以下方法

def following
     @user = User.find(params[:user])
     @following = @user.followers(User)
     @users = User.all

     response = {:user => @user, :following => @following, :users => @users}

     respond_to do |format|
      format.html  #following.html.erb
      format.xml {render :xml => response}
    end
end

以下视图:

<p><u>Following</u></p>

<% (1..(@following.count)).each do |i| %>

    <% if @users[i].followed_by?(@user) %> 
  <p> <%= @users[i].username %> </p>
   <% end %>
<% end %>

粉丝查看

<p><u>Followers</u></p>

<% (1..(@followers.count)).each do |i| %>

    <% if @users[i].follows?(@user) %> 
  <p> <%= @users[i].username %> </p>
   <% end %>
<% end %>

我的路线

  resources :users do
  match 'show/:id' => 'user#show'
  collection do
    get 'follow'
    get 'unfollow'
    get 'followers'
    get 'following'
  end

唯一似乎正常工作的是/users/followers?user=1

其他一切都没有显示任何内容或错误的名称。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您正在@followers中收到所有关注者,因此请在您的视图中使用:

<p><u>Followers</u></p>

<% @followers.each do |f| %> # f object is of type User.
  # You don't need the if statement that you had,
  # because you already know that they are followers.
  <p> <%= f.username %> </p>
<% end %>

这将打印每个follower的用户名。您遇到的其他问题是您的关注者和以下方法执行相同的操作,请检查您的gem的文档以了解如何获取following,然后为此类似地构建视图。