updateのルーティングがうまく繋げられません。

実現したいこと

多人数チャット機能を作成しているのですが、room/index(検索ページ)からroomテーブルの中のroom_passwordカラムのパスワードを打ち込むと、チャット部屋に入室できるような機能を作成するためにパスワード入力してボタンを押すと、RoomControllerのupdateメソッドでパスワードの確認とmember_idカラムに入室希望者のuser_idを入れるようにしたいと考えています。
ですがルーティングのつなげ方の問題なのか、パスワード入力後、ボタンを押すと真っ白なページに遷移します。

前提

分かりやすく、順序をまとめたものが下記です。

1.room/index(検索ページ)から入室できる
2.入室するにはroom_passwordを打ち込んで入室ボタンを押す
3.room_passwordをRoomControllerのupdateメソッドで受け取って、if文であらかじめ決められているパスワードと一致したら、member_idにuser_idを追加する。
4.そしてチャット部屋内にページが遷移するようにする。

発生している問題・エラーメッセージ

現状は遷移するのですが、真っ白なページになります。
showページは既に作ってあるので、どのように遷移しているかがまだ、分かっていません。

該当のソースコード

入室フォーム

room/index

1<form action="/room/update/{{ $room->room_id }}" method="POST" enctype="multipart/form-data"> 2 @method('put') 3 @csrf 4 <div> 5 <input type="hidden" name="member_id" value="{{$user->id}}"> 6 <input type="text" name="room_password"> 7 </div> 8 <x-primary-button> 9 <input type="submit" value="入室"> 10 </x-primary-button> 11</form></br>

・RoomControllerのupdateメソッド内での処理

RoomController

1public function update(Request $request, $id) 2 { 3 $user = Auth::user(); 4 $room = Room::find($id); 5 if($room->room_password == $request->room_password){ 6 $room = $request->member_id; 7 $room->save; 8 return view('rooms/show', ['room'=>$room, 'user'=>$user])->with('flash_message', 'パスワード認証を完了しました'); 9 } 10 return view('rooms/index', ['user'=>$user])->with('flash_message', 'パスワードが違います'); 11 }

・ルーティング

web.php

1<?php 2 3use App\Http\Controllers\ProfileController; 4use Illuminate\Support\Facades\Route; 5 6/* 7|-------------------------------------------------------------------------- 8| Web Routes 9|-------------------------------------------------------------------------- 10| 11| Here is where you can register web routes for your application. These 12| routes are loaded by the RouteServiceProvider and all of them will 13| be assigned to the "web" middleware group. Make something great! 14| 15*/ 16 17Route::get('/', function () { 18 return view('home'); 19}); 20 21Route::get('/dashboard', function () { 22 return view('dashboard'); 23})->middleware(['auth', 'verified'])->name('dashboard'); 24 25Route::middleware('auth')->group(function () { 26 Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); 27 Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); 28 Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); 29}); 30 31Route::resource('room', App\Http\Controllers\RoomController::class); 32 33Route::resource('message', App\Http\Controllers\MessageController::class); 34 35require __DIR__.'/auth.php';

試したこと

Laravelの公式ドキュメントでルーティングに関する事を調べたのですが、ルーティングが間違っているのような様子は見られません。
editページからしかupdateメソッドにつなげられないという制限はありますか?

補足情報(FW/ツールのバージョンなど)

PHP8
Laravel10

コメントを投稿

0 コメント