【问题标题】:Displaying a list of followers and people following显示关注者列表和关注者列表
【发布时间】:2013-02-27 14:36:56
【问题描述】:

地狱,

我正在使用一种名为 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

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails ruby loops gem


    【解决方案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,然后类似地构建您的视图。

    【讨论】:

    • 谢谢!有效! .. 我意识到在我的以下方法中我有追随者而不是追随者,并且按照您所说的方式进行循环,而不是按照我的方式完美地工作!
    • 不客气,祝你好运。 Rails guides 是初学者的绝佳资源。
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多