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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

647閲覧

ルームに複数ユーザーを入れる(チャットルーム)

moto12

総合スコア15

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/11/02 07:56

前提・実現したいこと

今、チャットルームを作っています。その中でルームを作成する画面で、ルームに入れるユーザーを選択しますが、現在、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

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

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

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

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

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

winterboum

2020/11/02 09:16

すべてのmodelの関連定義の所を載せてください。
moto12

2020/11/03 04:32

自己解決できました!ありがとうございました!
guest

回答1

0

自己解決

以下の通り、collection_check_boxesを用いることで、複数チャックすることのできるチャックボックスを作ることができました。

Ruby

1 <div class="grade-class"> 2 1−1 <%= f.collection_check_boxes :user_ids, User.where(grade:1, class_number:1).all, :id, :name %> 3 </div>

投稿2020/11/03 04:36

moto12

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問