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

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

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

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

0回答

671閲覧

rails Couldn't find Favorite with 'id'=2

naoya0922

総合スコア23

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2020/12/28 04:25

編集2020/12/28 04:38

rails 初心者です。
タイトルのエラーが表示されているのですが、以下に関係しそうなファイルを乗せるので、一緒に解決お願いいたします。

やったこと、
・ルーティングのresourcesは複数形になっている。

class FavoritesController < ApplicationController before_action :require_user_logged_in def create micropost = Favorite.find(params[:micropost_id]) current_user.like(micropost) flash[:success] = 'いいねをしました。' redirect_to user end

↓パーシャルとしてこのファイルの下で呼び出しています。

_like_button.html.erb <% if current_user.already_favorite?(micropost) %> <%= form_with(model: current_user.favorites.find_by(micropost_id: micropost.id), local: true, method: :delete) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit 'いい外す', class: 'btn btn-danger btn-block' %> <% end %> <% else %> <%= form_with(model: current_user.favorites.build,local: true) do |f| %> <%= hidden_field_tag :micropost_id, micropost.id %> <%= f.submit 'いいね', class: 'btn btn-primary btn-block' %> <% end %> <% end %>
#micropost.html.erb <ul class="list-unstyled"> <% microposts.each do |micropost| %> <li class="media mb-3"> <img class="mr-2 rounded" src="<%= gravatar_url(micropost.user, { size: 50 }) %>" alt=""> <div class="media-body"> <div> <%= link_to micropost.user.name, user_path(micropost.user) %> <span class="text-muted">posted at <%= micropost.created_at %></span> </div> <div> <p><%= micropost.content %></p> </div> <div> <% if current_user == micropost.user %> <%= link_to "Delete", micropost, method: :delete, data: { confirm: "You sure?" }, class: 'btn btn-danger btn-sm' %> <% end %> <%= render 'favorites/like_button', micropost: micropost %> </div> </div> </li> <% end %> <%= paginate microposts %> </ul>

_like_button.html.erbの already_favorite? メソッドはuser モデルに書いています。以下

class User < ApplicationRecord before_save { self.email.downcase! } validates :name, presence: true, length: { maximum: 50 } validates :email, presence: true, length: { maximum: 255 }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i }, uniqueness: { case_sensitive: false } has_secure_password has_many :microposts has_many :favorites, dependent: :destroy has_many :fav_microposts, through: :favorites, source: :micropost #いいね機能 def like(micropost) self.favorites.find_or_create_by(micropost_id :micropost.id) end def unlike(micropost) favorite = self.favorites.find_by(micropost_id: micropost.id) favorite.destroy if favorite end def already_favorite?(micropost) self.favorites.exists?(micropost.id) end end
Rails.application.routes.draw do root to: 'toppages#index' get 'login', to: 'sessions#new' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destroy' get 'signup', to: 'users#new' resources :users, only: [:index, :show, :new, :create] do member do get :followings get :followers end end =begin resources :users, only: [:index, :show, :new, :create] do post :likes end =end resources :microposts, only: [:create, :destroy] resources :relationships, only: [:create, :destroy] resources :favorites , only: [:create, :destroy] end Prefix Verb URI Pattern Controller#Action root GET / toppages#index login GET /login(.:format) sessions#new POST /login(.:format) sessions#create logout DELETE /logout(.:format) sessions#destroy signup GET /signup(.:format) users#new followings_user GET /users/:id/followings(.:format) users#followings followers_user GET /users/:id/followers(.:format) users#followers users GET /users(.:format) users#index POST /users(.:format) users#create new_user GET /users/new(.:format) users#new user GET /users/:id(.:format) users#show microposts POST /microposts(.:format) microposts#create micropost DELETE /microposts/:id(.:format) microposts#destroy relationships POST /relationships(.:format) relationships#create relationship DELETE /relationships/:id(.:format) relationships#destroy favorites POST /favorites(.:format) favorites#create favorite DELETE /favorites/:id(.:format) favorites#destroy

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

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

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

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

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

m.ts10806

2020/12/28 04:46

エラー自体の意味は調べてみたのでしょうか データに指定の値が入っているかとか、現状ご自身しか確認できないことがまだあると思います。
winterboum

2020/12/31 05:19

まだ未解決で、まだ解決したいなら、 ・どういう操作をした時に起きたエラーなのか ・エラーメッセージの全文(複数行あるとおもう) を載せてください それときっと後から追加で要望することになるので ・micropost.html.erb を呼び出すactionのceodeを載せてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問