やりたいこと
Answers テーブル
Likes テーブル
Replies テーブルがあります。
投稿(post)には複数のAnswerがありユーザーはいいなと思ったらLikeできます。この時のLikes controllerは以下の通りです。
<%= link_to("/likes/#{answer.id}/create") do %> post#show から link_toでlike controller に飛んで class LikesController < ApplicationController def create answer = Answer.find_by(id: params[:answer_id]) @like = like.new( user_id: @current_user.id, answer_id: params[:answer_id], ) @evaluation_answer.save redirect_to("/posts/#{answer.post_id}") end
そしてanswerがあったpostにredirect_toします。
わからないところはここからです。
Answerはそれぞれreplies(コメント)を持っており、youtubeのようにコメントを見るをクリックすると
"/replies/#{answer.id}/index"で 任意のAnswerのコメントを見れるようになっています。
そして /replies/#{answer_id}/indexでanswerにlikeをしてしまうと上記の通り、like controller から redorect_to で post show に戻ってしまいます。
youtube のように コメントの返信欄でコメントにいいねしても戻らないようにredirect_toを場合分け?もしくは作動しないようにする方法はありますでしょうか?
つまりanswerにいいねするパターンが2パターンあるということです。post showの時にAnswerの一覧があるときと、answerとその返信を表示している時です。以下のような感じです。
<div class="answer"> <%= @answer.content %> <%= link_to("/likes/#{@answer.id}/create", method: "post") do %> </div> <!-- replies --> <% @replies.each do |reply|%> <div class="replies-index-item"> . . </div> <% end %> ``` 以下はanswer like reply post の関係です ```ここに言語を入力 class Post < ApplicationRecord has_many :answers, dependent: :destroy has_many :replies, through: :answers end
class Answer < ApplicationRecord belongs_to :post has_many :likes, dependent: :destroy has_many :replies, dependent: :destroy
class Like < ApplicationRecord belongs_to :answer end
class Reply < ApplicationRecord belongs_to :answer belongs_to :post belongs_to :user
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。