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

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

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

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

Ruby on Rails

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

Q&A

0回答

684閲覧

userのマイページを表示させたい

guch

総合スコア1

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/07/20 13:32

編集2021/07/20 23:51

前提

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])の情報が必要ないので
エラーが起きているんだなとは思いますが、削除すると他のページが表示できなくなってしまいます。
何度か考えておりますが、解決できなかったためご相談しました。
初心者ですので、必要な情報がございましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問