質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1610閲覧

Ruby on Rails でredirect_toのリンク先を場合分け、もしくは作動しないようにしたい

atage517

総合スコア36

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/08/05 03:07

やりたいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

ajaxを使うことでredirect_toしないようにすることができました

投稿2020/08/17 00:50

atage517

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

作動しないようにするにはredirect_toを記述しなければいいと思います。

場合わけだと

answerにいいねするパターンが2パターンある

のでこの2パターンで適当に送るパラメータ(redirectがtrue or falseのような)を変えてそれをcontrollerで場合わけするような形になると思います。

投稿2020/08/16 13:21

nasuk47

総合スコア311

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問