ツイッターのダイレクトメッセージのような感じで、メッセージやり取り機能を実装したいのですが、下記のエラーが出てしまいます。
ルーティングは下記です。
Rails.application.routes.draw do devise_for :users root 'messages#index' resources :users, only: [:edit, :update] do resources :messages, only: [:index, :create] end end
コントローラーは下記です。
class MessagesController < ApplicationController before_action :set_user def index @message = Message.new @messages = @user.messages.includes(:user) end def create @message = @user.messages.new(message_params) if @message.save redirect_to user_messages_path(@user), notice: 'メッセージが送信されました' else @messages = @user.messages.includes(:user) flash.now[:alert] = 'メッセージを入力してください。' render :index end end private def message_params params.require(:message).permit(:content, :image).merge(user_id: current_user.id) end def set_user @user = User.find(params[:user_id]) end end
助言頂ければ幸いでございます。
【更新】
頂きました助言を元にデバッガ(binding.pry)を使い下記のように出ました。
26: def set_user => 27: binding.pry 28: @user = User.find(params[:user_id]) 29: end [1] pry(#<MessagesController>)> params => <ActionController::Parameters {"controller"=>"messages", "action"=>"index"} permitted: false> [2] pry(#<MessagesController>)> params[:user_id] => nil
「controller」というキーに対し「messages」という値が出ていることと、「action」というキーに対し、「index」という値が出ていることが、何を意味しているのか?
恐れ入りますが、助言を頂ければ幸いでございます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。