0

地狱所有,

我正在使用一个名为 socialization ( https://github.com/cmer/socialization )的红宝石宝石

我让它工作了,我可以关注和取消关注用户,看看有多少人关注或关注任何用户。问题是当我想输出关注者和关注者的用户名时,它仅适用于 user1,对于用户 2-4,它将根据关注者的数量按顺序显示用户名,例如,如果表是

  • 用户 1 跟随 => 用户 2
  • 用户 2 跟随 => 用户 3

我要求用户 3 的关注者(知道 user3 是 1 个关注者)它会打印出 User1 无论如何(我希望这是有道理的)

这是我的代码:

UsersController 中的 Followers 方法

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

用户控制器中的以下方法

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

其他所有内容要么不显示任何内容,要么显示错误的名称。

任何帮助,将不胜感激!

4

1 回答 1

1

您正在吸引所有关注者@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然后以类似方式构建您的视图。

于 2013-02-27T16:11:57.763 回答