前提・実現したいこと
railsで、自分辞書アプリとなるものを作成しています。
現段階、トップページ('memos#index')では、全てのユーザーが投稿したコメントが全て表示されています。
マイページ(/users/:id)では、ログインしたユーザーが投稿したコメントのみの表示が出来ています。
ここまで問題なく機能、表示が出来ています。
希望は、トップページにログインしたユーザーが投稿したコメントのみ表示
マイページに全てのユーザーが投稿したコメント表示です。
上記の2ページを交換すれば解決と考えていてビューのみで交換してみましたが、複雑なエラーが出ました。
root toをトップページ→マイページに修正でも良いのかと考えて今に至ります。
発生している問題・エラーメッセージ
memosテーブルにはuser_idと紐付けが出来ております。
エラーメッセージ
ActiveRecord::RecordNotFound in UsersController#show Couldn't find User without an ID Extracted source (around line #3) 1class UsersController < ApplicationController 2 def show **3 user = User.find(params[:id])** 4 @nickname = current_user.nickname 5 @memos = current_user.memos 6 end
該当のソースコード
rails
1Rails.application.routes.draw do 2 root to: 'memos#index' 3 4 resources :memos, only: [:index, :new, :show, :create, :edit, :update, :destroy] do 5 collection do 6 get 'search' 7 end 8 end 9 10 devise_for :users 11 resources :users, only: :show 12 13end 14 15
rails
1class UsersController < ApplicationController 2 def show 3 user = User.find(params[:id]) 4 @nickname = current_user.nickname 5 @memos = current_user.memos 6 end 7end 8
rails
1class MemosController < ApplicationController 2 3 before_action :move_to_index, except: [:index, :show, :search] 4 5 def index 6 @memos = Memo.all 7 end 8 9 def new 10 @memo = Memo.new 11 12 13 end 14 15 def edit 16 @memo = Memo.find(params[:id]) 17 end 18 19 def update 20 memo = Memo.find(params[:id]) 21 memo.update(memo_params) 22 redirect_to memo_path(memo.id) 23 end 24 25 def destroy 26 memo = Memo.find(params[:id]) 27 memo.destroy 28 redirect_to root_path 29 end 30 31 def create 32 Memo.create(memo_params) 33 end 34 35 def show 36 @memo = Memo.find(params[:id]) 37 end 38 39 def search 40 @memos = Memo.search(params[:keyword]) 41 end 42 43 44 private 45 def memo_params 46 params.require(:memo).permit(:title, :text, :url).merge(user_id: current_user.id) 47 48 end 49 50 def move_to_index 51 redirect_to action: :index unless user_signed_in? 52 end 53end
試したこと
マイページとなるものはrails routesで確認すると
user GET /users/:id(.:format) users#showとなります。
root to: 'users#show'に修正したところ、上記のエラーが表示されました。
idが書いてないからエラーと思うのですが、書き方を調べてみましたが、
見当たらなかったので、質問させていただきました。
分かりづらく申し訳ないですが、ご教示いただけますと幸いです。
宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/07 07:20