前提・実現したいこと
今、チャットルームを作っています。その中でルームを作成する画面で、ルームに入れるユーザーを選択しますが、現在、current_userともう一人他のユーザーのみしかルームに入れれません。check_boxなどを用いて
複数名のユーザーをルームに入れたい場合、どうしたらいいでしょうか。
参考(チャットルーム作成画面)
リンク内容
該当のソースコード
Ruby
1 2【ルーム作成ページのビューファイル】 3<div class='chat-room-form'> 4 <h1>新規チャットルーム</h1> 5 <%=form_with model: @room, local: true do |f|%> 6 <div class='chat-room-form__field'> 7 <div class='chat-room-form__field--left'> 8 <%= f.label :チャットルーム名, class: 'chat-room-form__label'%> 9 </div> 10 11 <div class='chat-room-form__field--right'> 12 <%= f.text_field :name, class: 'chat__room_name chat-room-form__input', placeholder: 'チャットルーム名を入力してください'%> 13 </div> 14 </div> 15 <div class='chat-room-form__field'> 16 </div> 17 <div class='chat-room-form__field'> 18 <div class='chat-room-form__field--left'> 19 <label class='chat-room-form__label' for='chat_room_チャットメンバー'>チャットメンバー</label> 20 </div> 21 <div class='chat-room-form__field--right'> 22 <select name="room[user_ids][]"> 23 <option value="">チャットするユーザーを選択してください</option> 24 <% User.where.not(id: current_user.id).each do |user| %> 25 <option value=<%= user.id %>><%= user.name %></option> 26 <%end%> 27 </select> 28 <input name="room[user_ids][]" type="hidden" value=<%= current_user.id %>> 29 </div> 30 </div> 31 <div class='chat-room-form__field'> 32 <div class='chat-room-form__field--left'></div> 33 <div class='chat-room-form__field--right'> 34 <%= f.submit class: 'chat-room-form__action-btn'%> 35 </div> 36 </div> 37 <% end %> 38</div>
Ruby
1【rooms.controller.rb】 2class RoomsController < ApplicationController 3 4 def index 5 end 6 7 def new 8 @room = Room.new 9 end 10 11 def create 12 @room = Room.new(room_params) 13 if @room.save 14 redirect_to root_path 15 else 16 render :new 17 end 18 end 19 20 def destroy 21 room = Room.find(params[:id]) 22 room.destroy 23 redirect_to root_path 24 end 25 26 private 27 28 def room_params 29 params.require(:room).permit(:name, user_ids: []) 30 end 31end
Ruby
1【users.controller.rb】 2class UsersController < ApplicationController 3 4 def edit 5 end 6 7 def update 8 if current_user.update(user_params) 9 redirect_to root_path 10 else 11 render :edit 12 end 13 end 14 15 private 16 17 def user_params 18 params.require(:user).permit(:name, :email) 19 end 20end
回答1件
あなたの回答
tips
プレビュー