#前提・実現したいこと
railsを使用してアプリを作成しております。
現在、ブラウザ上でプルダウンリストから選択肢を選ぶようにしているのですが、選択した情報をDB(applied_worksテーブル)のstatusカラムにAjax通信を利用して更新させたいと考えております。
#発生している問題・エラーメッセージ
ブラウザ上で選択した情報(選択肢)(app/views/applied_works_index.html.erb)をコントローラー(applied_works_controller.rb)で取得し、updateアクションでDBのstatusカラムのみをupdate_attributeにて更新させようとしていたのですが、どのようにブラウザ上で選択された情報のみ(status)を抽出するのか?
現状ではform_withを使用しようとしているが、果たしてform_withで実現できるのか、他の手段をとったほうが良いのか
わからず質問させていただきました。
#該当するコード
ruby:index.html.erb
1index.html.erb 2<%= render "shared/header" %> 3 4<h1 class="subject"><%= "申込者一覧" %></h1> 5 6<% if @applied_works.present? then %> 7 <% @applied_works.each do |appliedwork| %> 8 <table> 9 <tr> 10 <th>姓</th> 11 <th>名</th> 12 <th>大学</th> 13 <th>誕生日</th> 14 <th>学年</th> 15 <th>学生詳細ページ</th> 16 <th>現在の状況</th> 17 </tr> 18 <tr align="center"> 19 <td><%= appliedwork.student.first_name %></td> 20 <td><%= appliedwork.student.last_name %></td> 21 <td><%= appliedwork.student.university %></td> 22 <td><%= appliedwork.student.birthday %></td> 23 <td><%= appliedwork.student.year %></td> 24 <td><%= link_to "移動する", student_path(id:appliedwork.student.id) %></td> 25 <%= form_with do |f| %> #←ここからが該当のコードです。 26 <td align ="center"><%= f.select :status, [["未対応", 1], ["採用予定", 2], ["お見送り",3], ["交渉中",4], ["口コミ待ち",5], ["終了",6]] %></td> 27 <td><%= f.submit "更新"%></td>#←ここまでが該当のコードです。 28 <% end %> 29 </tr> 30 </table> 31 <% end %> 32<% else %> 33 <%= "まだ応募はきていません。もうしばらくお待ちください。"%> 34<% end %> 35<%= render "shared/footer" %>
ruby:applied_works_controller.rb
1 2applied_works_controller.rb 3class AppliedWorksController < ApplicationController 4before_action :authenticate_student!, only:[:create] 5before_action :authenticate_company!, only:[:index] 6 7 def index 8 @applied_works = AppliedWork.where(business_id:params[:business_id]) 9 end 10 11 def create 12 @applied_works = AppliedWork.create(business_id: params[:business_id], student_id:current_student.id, status:1) 13 redirect_to root_path 14 end 15 16 def update 17 end 18 19 20 private 21 def status_params 22 params.require(:AppliedWork).permit(:status) 23 end 24end
#試したこと
index.html.erb
にて、form_withのAjaxにてDBの情報を更新しようとしたが、DBに新しく情報が追加されてしまった。
このことから、選択する情報のstatusカラム
のみの情報だけを抽出してupdate
アクションで更新をかければ新しくデータが追加されることはないのではと考えたが、ブラウザ上で選択した情報を抽出することができなかった。
#問題の発生した環境
ruby :2.6.5
rails :6.0.3.5
#最後に
自身の実力不足にて質問させていただきます。
皆様のお力をお借りできたら幸いです。
何卒、よろしくお願い申し上げます。
あなたの回答
tips
プレビュー