社内でユーザーを指定してコメントを送る物を作っています。
今まではcollection_selectを使い登録ユーザー一覧を表示していたのですが
登録ユーザー数が多くなった為、目的のユーザーを見つけるのに苦労するようになってきました。
今まで使っていたコード↓
task/new
<%= form_with(model: @task, local: true) do |f| %> <div class="form-group"> <%= f.label :user, '担当者' %> <%= f.collection_select :user_id, User.all, :id, :name, :prompt => "選択してください" %> </div> <div class="form-group"> <%= f.label :comment, 'コメント' %> <%= f.text_area :comment, class: 'form-control' %> </div> <%= f.submit '作 成', class: 'btn btn-primary btn-block' %> <% end %>
部署(department)を作り、userを関連付けていので
部署を選んだらその部署を登録しているuserのみを表示できるようにしたいのですが
collection_selectを調べると上記の様な方法しか出てこないので
良い方法が有れば知恵を貸していただけると助かります。
該当のソースコード
DB
user
1class CreateUsers < ActiveRecord::Migration[5.2] 2 def change 3 create_table :users do |t| 4 t.string :name 5 t.string :email 6 t.string :password_digest 7 t.references :department, foreign_key: true 8 t.boolean :admin, default: false 9 10 t.timestamps 11 end 12 end 13end
department
1class CreateDepartments < ActiveRecord::Migration[5.2] 2 def change 3 create_table :departments do |t| 4 t.string :name, null: false 5 6 t.timestamps 7 end 8 end 9end
task
1class CreateTasks < ActiveRecord::Migration[5.2] 2 def change 3 create_table :tasks do |t| 4 t.references :user, foreign_key: true 5 t.string :comment 6 7 t.timestamps 8 end 9 end 10end 11
task
new
1<%= form_with(model: @task, local: true) do |f| %> 2 3 <div class="form-group"> 4 <%= f.label :user, '担当者' %> 5 <%= f.collection_select :user_id, User.all, :id, :name, :prompt => "選択してください" %> 6 </div> 7 8 <div class="form-group"> 9 <%= f.label :comment, 'コメント' %> 10 <%= f.text_area :comment, class: 'form-control' %> 11 </div> 12 13 <%= f.submit '作 成', class: 'btn btn-primary btn-block' %> 14<% end %>
Controller
1def new 2 @task = Task.new 3end 4 5def create 6 @task = Task.new(task_params) 7 if @task.save 8 flash[:success] = 'メッセージを投稿しました。' 9 redirect_to root_url 10 else 11 flash.now[:danger] = 'メッセージの投稿に失敗しました。' 12 render :new 13 end 14end 15 16private 17 18def task_params 19 params.require(:task).permit(:user, :comment) 20end
補足情報(FW/ツールのバージョンなど)
開発環境
AWS9
Rails5.2.4.1
プログラミング歴
6ヶ月
あなたの回答
tips
プレビュー