rails初心者です。
現在架空のアパレルサイトを制作しており、
その中でログインユーザーと既存のスタッフ間でチャットが出来る機能を実装しようと考えております。
新規チャット名を入力とチャットしたいスタッフ名を選んでCreate Roomボタンを押すと
以下のエラーメッセージが発生しました。
Parametersには値が入っているのでrooms_controller.rb内のparamsの記述が誤っているのでは無いかと推測していますが実際にどのような記述をして良いかわかりません。
どなたかご指導のほどよろしくお願いいたします。
発生している問題・エラーメッセージ
ActiveModel::UnknownAttributeError in RoomsController#create unknown attribute 'user_id' for Room.
ターミナル内
app/controllers/rooms_controller.rb:7:in `create' Started POST "/rooms" for ::1 at 2020-12-12 11:52:50 +0900 Processing by RoomsController#create as HTML Parameters: {"authenticity_token"=>"pRXXcKRl1rYLD2Fuieu2vjGFvGBYbPtPI/KcfSHZZORSkJhHrq+m3bSq3a+cLeauQ47wNch2yIkd+8OG0EmEOQ==", "room"=>{"name"=>"新規チャット", "staff_id"=>["risa"], "user_id"=>["3"]}, "commit"=>"Create Room"} Unpermitted parameter: :staff_id Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms | Allocations: 1110) ActiveModel::UnknownAttributeError (unknown attribute 'user_id' for Room.):
該当のソースコード
html
1<div class='chat-room-form'> 2 <h1>新規チャットルーム</h1> 3 <%=form_with model: @room, local: true do |f|%> 4 <div class='chat-room-form__field'> 5 <div class='chat-room-form__field--left'> 6 <%= f.label :ルーム名, class: 'chat-room-form__label'%> 7 </div> 8 <div class='chat-room-form__field--right'> 9 <%= f.text_field :name, class: 'chat__room_name chat-room-form__input', placeholder: 'ルーム名を入力してください'%> 10 </div> 11 </div> 12 <div class='chat-room-form__field'> 13 <div class='chat-room-form__field--left'> 14 <label class='chat-room-form__label' for='chat_room_チャットメンバー'>スタッフ</label> 15 </div> 16 <div class='chat-room-form__field--right'> 17 <select name="room[staff_id][]"> 18 <option value="">チャットするスタッフを選択してください</option> 19 <% Staff.all.each do |staff| %> 20 <option><%= staff.staff_name %></option> 21 <% end %> 22 </select> 23 <input name="room[user_id][]" type="hidden" value=<%= current_user.id %>> 24 </div> 25 </div> 26 <div class='chat-room-form__field'> 27 <div class='chat-room-form__field--left'></div> 28 <div class='chat-room-form__field--right'> 29 <%= f.submit class: 'chat-room-form__action-btn'%> 30 </div> 31 </div> 32 <% end %> 33</div>
Roomscontroller
1class RoomsController < ApplicationController 2 def new 3 @room = Room.new 4 end 5 6 def create 7 @room = Room.new(room_params) 8 if @room.save 9 redirect_to root_path 10 else 11 render :new 12 end 13 end 14 15 private 16 17 def room_params 18 params.require(:room).permit(:name, user_id: []).merge(staff_id: []) 19 end 20 21end
roomsテーブル |id|name|created_at|updated_at| |:--|:--:|--:| |||| staffsテーブル |id|staff_name|created_at|updated_at| |:--|:--:|--:| |||| room_staffsテーブル |id|room_id|user_id|staff_id|created_at|updated_at| |:--|:--:|--:| ||||
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/12 10:19
2020/12/12 17:00
2020/12/13 01:45
2020/12/13 02:02