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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

4444閲覧

いいね機能のredirect先の指定について

aku424tt

総合スコア15

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2020/06/19 04:45

前提・実現したいこと

現在ruby on rails でアプリケーションを作成しており、いいね機能をつけたいと思っています。
いいねのcreate,destroyは投稿一覧からも詳細ページからも出来るようにしたいです。
いいねのcreate,destroyをしたら画面の推移はせずそのままの画面でいたいです
つまり投稿一覧でいいねをしたら投稿一覧のままで、投稿詳細ページでいいねをしたら投稿詳細ページのままにするのはどうしたら良いでしょうか自分なりに調べたのですがredirectの書き方がわかりません。

発生している問題・エラーメッセージ

投稿詳細ページでいいねをしたら詳細ページのままいるのですが、投稿一覧ページでいいねをすると投稿詳細ページにredirectしてしまいます。 それはコントローラーのredirect先をそのように指定しているからなのですが。 自分なりに調べたのですがredirectの書き方がわかりません。

該当のソースコード

ruby

1 2 3class FavoritesController < ApplicationController 4 def create 5 book = Book.find(params[:book_id]) 6 favorite = current_user.favorites.new(book_id: book.id) 7 favorite.save 8 redirect_to book_path(book) 9 end 10 def destroy 11 book = Book.find(params[:book_id]) 12 favorite = current_user.favorites.find_by(book_id: book.id) 13 favorite.destroy 14 redirect_to book_path(book) 15 end 16end 17

show

1 2<%= render 'layouts/sidebar', book: @book, user: @book_show.user %> 3<br> 4<br> 5<br> 6<div class='col-xs-9'> 7<h1>Book detail</h1> 8<% if @book_show.user_id == current_user.id %> 9  <table class="table"> 10   <thead> 11    <tr> 12 <td colspan="1"></td> 13 <td>Title</td> 14 <th>Opinion</th> 15 <th>favorites</th> 16 <th colspan="2"></th> 17 </tr> 18 </thead> 19 <%= %> 20 <tbody> 21 <tr> 22 23 <td><%= link_to user_path(@book_show.user_id)do%> 24 <%= attachment_image_tag @book_show.user , :profile_image, size: "60x60",format: 'jpeg', class: " pull-left profile-img", fallback: "no_image.jpg" %><br> 25 <%= @book_show.user.name %> 26 <% end %> 27 </td> 28 <td><%= @book_show.title %></td> 29 <td><%= @book_show.body %></td> 30 <!-- favorites --> 31 <td> 32 <% if @book_show.favorited_by?(current_user) %> 33 <li> 34 <%= link_to book_favorites_path(@book_show.id), method: :delete do %> 35 <i class="fa fa-heart" aria-hidden="true" style="color: red;"></i> 36 <%= @book_show.favorites.count %> いいね 37 <% end %> 38 </li> 39 <% else %> 40 <li> 41 <%= link_to book_favorites_path(@book_show.id), method: :post do %> 42 <i class="fa fa-heart-o" aria-hidden="true"></i> 43 <%= @book_show.favorites.count %> いいね 44 <% end %> 45 </li> 46 <% end %> 47 </td> 48 <!-- favorites --> 49 <td><%= link_to "Edit", edit_book_path(@book_show.id) %></td> 50 <td><%= link_to "Destroy", book_path(@book_show.id), method: :delete, data: {confirm: "削除しますか?"} %></td> 51 </tr> 52 </tbody> 53 </table> 54<% else %> 55 <table class="table"> 56   <thead> 57    <tr> 58 <td colspan="1"></td> 59 <td>Title</td> 60 <th>Opinion</th> 61 <th>favorites</th> 62 <th colspan="2"></th> 63 </tr> 64 </thead> 65 <%= %> 66 <tbody> 67 <tr> 68 69 <td><%= link_to user_path(@book_show.user_id)do%> 70 <%= attachment_image_tag @book_show.user , :profile_image, size: "60x60",format: 'jpeg', class: " pull-left profile-img", fallback: "no_image.jpg" %><br> 71 <%= @book_show.user.name %> 72 <% end %> 73 </td> 74 <td><%= @book_show.title %></td> 75 <td><%= @book_show.body %></td> 76 <!-- favorites --> 77 <td> 78 <% if @book_show.favorited_by?(current_user) %> 79 <li> 80 <%= link_to book_favorites_path(@book_show.id), method: :delete do %> 81 <i class="fa fa-heart" aria-hidden="true" style="color: red;"></i> 82 <%= @book_show.favorites.count %> いいね 83 <% end %> 84 </li> 85 <% else %> 86 <li> 87 <%= link_to book_favorites_path(@book_show.id), method: :post do %> 88 <i class="fa fa-heart-o" aria-hidden="true"></i> 89 <%= @book_show.favorites.count %> いいね 90 <% end %> 91 </li> 92 <% end %> 93 </td> 94 <!-- favorites --> 95 <td colspan="2"></td> 96 </tr> 97 </tbody> 98 </table> 99<% end %> 100</div> 101

index

1<%= render 'layouts/sidebar', book: @book, user: @user %> 2<div class='col-xs-9'> 3<h1>Books</h1> 4<table class="table"> 5 <thead> 6 <tr> 7 <th colspan="1"></th> 8 <th>Title</th> 9 <th>Opinion</th> 10 <th>favorites</th> 11 </tr> 12 </thead> 13 <% @books.each do |book|%> 14 <tbody> 15 <tr> 16 <td><%= link_to user_path(book.user_id)do%> 17 <%= attachment_image_tag book.user, :profile_image, size: "60x60", format: 'jpeg', class: "pull-left profile-img", fallback: "no_image.jpg" %></td> 18 <% end %> 19 <td><%= link_to book.title, book_path(book.id)%></td> 20 <td><%=book.body%></td> 21 22 <!-- favorites --> 23 <td> 24 <% if book.favorited_by?(current_user) %> 25 <li> 26 <%= link_to book_favorites_path(book.id), method: :delete do %> 27 <i class="fa fa-heart" aria-hidden="true" style="color: red;"></i> 28 <%= book.favorites.count %> いいね 29 <% end %> 30 </li> 31 <% else %> 32 <li> 33 <%= link_to book_favorites_path(book.id), method: :post do %> 34 <i class="fa fa-heart-o" aria-hidden="true"></i> 35 <%= book.favorites.count %> いいね 36 <% end %> 37 </li> 38 <% end %> 39 </td> 40 <!-- favorites --> 41 </tr> 42 </tbody> 43 <% end %> 44 </table> 45</div> 46

補足情報(FW/ツールのバージョンなど)

何か不足している情報がありましたら言って下さい

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

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

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

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

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

guest

回答1

0

自己解決

ruby

1class FavoritesController < ApplicationController 2 def create 3 book = Book.find(params[:book_id]) 4 favorite = current_user.favorites.new(book_id: book.id) 5 favorite.save 6 redirect_back(fallback_location: root_path) 7 end 8 def destroy 9 book = Book.find(params[:book_id]) 10 favorite = current_user.favorites.find_by(book_id: book.id) 11 favorite.destroy 12 redirect_back(fallback_location: root_path) 13 end 14end 15

と記述したら解決できました

投稿2020/06/19 14:19

aku424tt

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.43%

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

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

質問する

関連した質問