質問: railsチュートリアルの最終章にてフォロー機能を学びますが、 各ユーザーページ毎にしか「フォロー/フォロー解除」ボタンを導入しません。 **ユーザー一覧画面の各ユーザーごとに「フォロー/フォロー解除」ボタンを導入したいと思っていますがなかなか難しかったのでこの場を借りて質問いたします。** やりたいことのイメージ画像 (ユーザー一覧画面の各ユーザーごとに「フォロー/フォロー解除」の追加) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/77f0148ac90a3f1b8cd64ccea0cae02f.png) 自分なりに考えたこと ---------- 上の画像とは違い、ユーザー一覧ページには **「フォローされていたり」、「フォローしていたり」、**様々なユーザーがいます。 ただでさえ複雑な「フォロー機能」なので正直、挫折しそうになりましたが、 色々と試して失敗した結果、**if文**を使用すればうまくいきそうかもといとこまで来ました。 そこで --- ユーザー一覧画面にて もし、フォローしていなければ「フォロー」ボタンを表示する フォローしていれば「フォロー中」ボタンを表示する というソースコードを書きたいと思いますが、ここで壁にぶつかり中です。 該当ソースコード -------- index.html.erb ``` <% if folliwed_id.blank? %> ←ここの文で悩んでいます。 <%= form_for(current_user.active_relationships.build) do |f| %> <%= hidden_field_tag :followed_id, user.id %> <%= f.submit "フォロー", class: "btn btn-primary" %> <% end %> <% else %> <%= form_for(current_user.active_relationships.find_by(followed_id: user.id), html: { method: :delete }) do |f| %> <%= f.submit "フォロー中", class: "btn" %> <% end %> ``` もし、folliwed_idを持っていなければ、「フォロー」ボタン。 持っていれば「フォロー中」ボタンを表示する。 まとめ --- と、言う感じでif文を書けれたらユーザー一覧画面にも「フォロー機能」を導入できそうですが、全く検討違いを言っていたらすいません。 そんなことしなくてもこうしたらうまくいくよ!などありましたらご教授願います。
回答: if文で分岐するのでいいと思います。以前似たようなことをして、そのときもif文で表示するものを変えました。そのときはアイテムにお気に入りしていれば「お気に入り解除」ボタン、お気に入りしていなければ「お気に入りにする」ボタンをを表示するものでした。 そのときのは各アイテムに対して、ユーザがお気に入りしているか判定して表示するボタンを変えていました。 ``` <% if current_user.followed?(user.id) %> ←ログインしているユーザが、それぞれのユーザをフォローしているか判定する フォローする <% else %> フォロー解除(フォロー中) <% end %> ``` 判定条件のメソッドではuserがフォローしているidの中に表示しようとしているユーザがいるかチェックしています ``` class User def followed?(user_id) active_relationship_ids.include?(user_id) end end ``` 求めている回答と違っていたらすみません。