チャットルーム管理機能③

どうもバンバンです。
今回はRailsでユーザー管理機能を実装する方法を復習を兼ねて 残していこうと思います。
ユーザ管理機能と一緒で全部書くと長くなるので何編かに分けて投稿していきます。
 
はじめに
今回はプルダウンの実装になります。
今後アプリを作成する中でもよく使う機能だと思うのでしっかり復習を兼ねて学習していきます
 
用語集
プルダウン
メニューバーのこと
今回は登録しているユーザーがメニューバーをクリックすると表示されるようにする機能のこと
 
select要素
HTMLで使用
セレクトボックスを作成するための要素
select要素のname属性に値を指定すると、コントローラへ値を渡すことが可能
 
option要素
select要素の中に記述することでプルダウンの選択肢になる要素
親子関係
<select>
<option>ライオン</option>
<option>キリン</option>
<option>カバ</option>
</select>
 
モデル名.where("条件")
条件に一致したレコードを配列として取得可能
 
モデル名.where.not("条件")
条件に一致したレコード以外の値を配列として取得
 
手順

https://tech-master.s3.amazonaws.com/uploads/curriculums//8eda805094bd2ab4e8645397f1fafd37.gif

①新規チャットルーム作成画面を編集
対応するviewを編集
<select>
↑select要素 セレクトボックスを作成するために記述
<option>チャットするユーザーを選択してください</option>
↑案内文として記述
<option>ユーザー1</option>
↑仮データ
<option>ユーザー2</option>
↑仮データ
</select>
 
②DBからユーザー情報を取得
 
<select>
 
<option value="">チャットするユーザーを選択してください</option>
 
<% User.all.each do |user| %>
↑ユーザーの情報を順番に取り出す
<option><%= user.name %></option>
↑その中からユーザーの名前を繰り返し表示
<% end %>
 
</select>
 
③ログインしているユーザー情報を取り除く
 
<select>
<option value="">チャットするユーザーを選択してください</option>
 
<% User.where.not(id: current_user.id).each do |user| %> ↑一致したレコード以外を取得 ↑ログイン中のユーザー
 
<option><%= user.name %></option>
<% end %>
</select>
where.not(”条件”)を使用することで
現在ログイン中(current_user.id)以外取得
 
④コントローラへ値を送る
選択したユーザーのidをパラメーターとして送りたい
<select name="room[user_ids]">
↑コントローラーへ値を送る=name属性
<option value="">チャットするユーザーを選択してください</option>
<% User.where.not(id: current_user.id).each do |user| %>
 
<option value=<%= user.id %>><%= user.name %></option>
 
おわりに
機能実装をしていて感じることは、暗記は全く必要ないってことです。むしろ暗記してしますと理解しないと行けない部分を御座なりにしながらすすめてしまうので、調べ直したら理解できる学習がいいと最近は思っています。