前提
Webアプリ内容
Rubyで結婚式用のフリーランスの人を探すアプリを製作中です。
Bootstrapを使用しております。
名称
user = フリーランスのスタッフを探しているカップル
staff_member = フリーランスのプランナーやヘアメイクなど。
contact = user がstaff_memberへ問い合わせする
※user、staff_memberはdeviceを使用。
詳細
userからstaff_memberへ問い合わせ機能(contact)を作成し、
staff_memberのマイページで問い合わせ内容を表示。
問い合わせしたuserの名前をクリックするとuserのユーザーページにアクセスできます。
解決したいこと
userでログインをし、userマイページにアクセスしたい
発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound in UsersController#show
Couldn't find Contact without an ID
error
1 def move_to_index 2 @contact = Contact.find(params[:contact_id]) 3 unless @contact.staff_member.id == current_staff_member.id || @contact.user_id == current_user.id 4 redirect_to root_path 5 end
@contact = Contact.find(params[:contact_id])がマークされております
routes
Ruby
1Rails.application.routes.draw do 2 3 devise_for :users 4 devise_for :staff_members 5 6 root to: "staff_members#index" 7 get '/mypage', to: 'staff_members#mypage' 8 get '/userpage', to: 'users#userpage' 9 10 resources :staff_members do 11 resources :contacts 12 end 13 resources :users 14end 15
UsersController
Ruby
1class UsersController < ApplicationController 2 before_action :authenticate_user!, only: [:userpage] 3 before_action :move_to_index, only: :show 4 5 def userpage 6 redirect_to user_path(current_user) 7 end 8 9 def show 10 @user = User.find(params[:id]) 11 end 12 13 private 14 15 def move_to_index 16 @contact = Contact.find(params[:contact_id]) 17 unless @contact.staff_member.id == current_staff_member.id || @contact.user_id == current_user.id 18 redirect_to root_path 19 end 20 end 21end 22
HTML
HTML
1<li><%= link_to "#{current_user.last_name}様", userpage_path, class:"nav-link"%></li>
試したこと
userとcontactのアソシエーションの確認
バージョン
Ruby 2.6.5
その他
userpageに@contact = Contact.find(params[:contact_id])の情報が必要ないので
エラーが起きているんだなとは思いますが、削除すると他のページが表示できなくなってしまいます。
何度か考えておりますが、解決できなかったためご相談しました。
初心者ですので、必要な情報がございましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー