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

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

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

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

Q&A

0回答

158閲覧

いいね機能 解釈があっているか確認して欲しいです

ooaai

総合スコア17

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/02 07:39

本の投稿機能を作成しコメント機能といいね機能を追加しました。
コントローラ内で記述するところでいくつかわからない点があったので質問です。
下に記述をまとめたので解釈があっているか確認していただきたいです!分かりにくかったらごめんなさい!

favorites_controller_rb↓

def create 1 book = Book.find(params[:book_id]) 2 favorite = Favorite.new(book_id: book.id) 3 favorite.user_id = current_user.id 4 favorite.save 5 redirect_to request.referrer end def destroy 1 book = Book.find(params[:book_id]) 2 favorite = current_user.favorites.find_by(book_id: book.id) 3 favorite.destroy 4 redirect_to request.referrer end

create
1行目 いいねをつけた投稿のidを取得
2行目 空のインスタンスに引数の情報(favoriteテーブルのbook_idに情報を入れるため1行目で持ってきたidを代入している?)を入れてfavoriteに代入
3行目 favoriteテーブルのuser_idに情報を入れるために指定している記述
4行目 保存
5行目 遷移先を指定
※2行目と3行目は1文にできますが個人的にこっちの方がわかりやすいのであえて別に記述しています。

destroy
1行目 いいねをつけた投稿のidを取得
2行目
3行目 削除
4行目 遷移先を指定

_favorite.html.erb↓

<% if book.favorited_by?(current_user) %> <%= link_to book_favorites_path(book), method: :delete do %> <div class="red"> <span><i class="fas fa-heart"></i></span> <%= book.favorites.count %> </div> <% end %> <% else %> <%= link_to book_favorites_path(book), method: :post do %> <span><i class="fas fa-heart"></i></span> <%= book.favorites.count %> <% end %> <% end %>

いいねをカウントする記述<%= book.favorites.count %>のfavoritesが複数形になっているのはアソシエーションしてから。(book.rbでhas_many :favoritesを記述したfavoritesからきている)

全て調べながら実装したものですが
method: :deleteとmethod: :postをなぜしているするのかと、link_toで指定したパスの意味がわからないのでわかる範囲で説明していただけると嬉しいです

縦に見てください↓

テーブル
userbookfavorite 
ididid
nameuser_iduser_id
emaititlebook_id
passwardbody

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

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

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

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

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

m.ts10806

2021/01/02 08:24

ドキュメントは確認されたのでしょうか。ドキュメントの機能説明で納得できそうには思いますが。
ooaai

2021/01/02 10:45

そのようなものがあるのを知りませんでした! 見てみます!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問