0

地獄のすべて、

私はsocialization(https://github.com/cmer/socialization)と呼ばれるルビーの宝石を使用しています

私はそれを機能させており、ユーザーをフォローおよびフォロー解除して、任意のユーザーをフォローまたはフォローしているユーザーの数を確認できます。問題は、フォロワーとフォローのユーザー名を出力したい場合です。これはuser1でのみ機能し、ユーザー2〜4の場合は、フォロワーの数に基づいてユーザー名が順番に表示されます。

  • user1が続く=>ユーザー2
  • user2が続く=>ユーザー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

他のすべては何も表示しないか、間違った名前を表示します。

どんな助けでもいただければ幸いです!

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。あなたが持っている他の問題は、あなたのフォロワーとフォローするメソッドが同じことをするということです、あなたの宝石のドキュメントをチェックして、それを取得する方法を理解しfollowing、それに対してあなたのビューを同様に構造化します。

于 2013-02-27T16:11:57.763 に答える