はじめに
未経験からエンジニアに転職しました。
まだまだわからないことだらけですが、毎日楽しく働いています!
業務や個人開発での発見やエラー解決などをアウトプットしています。
初学者向けの内容です。
やること
Railsの form_with で入力された値を取得して色々操作したい。
今回はサンプルとして
「form_with で入力されたID(数値)を取得して、そのID(数値)を使ってデータを操作する」をやってみる。
手順
view
<%= form_with url: huga_huga_path, method: :patch, local: true do |f| %>
<div class="field">
# :hoge_id がparams になる
<%= f.text_area :hoge_id, class: 'textarea' %>
<%= f.submit %>
</div>
<% end %>
↑のように、textarea に数値が複数入力されたと想定する。
form に入力された値を取得するには、
params[:hoge_id]
上記のように書く。
view で↓のように、「:hoge_id」と書いた部分がparamsになる
<%= f.text_area :hoge_id, class: 'textarea' %>
使い方のサンプル
このサンプルでは、↓をやってみる。
「入力された数値を取得して、その数値と同じidのデータをupdate_all で一括更新する」
controller
# fromに入力された数値を取得する
# .split(/\R/) をすることで、改行して入力された数値を区切ることができる
hoge_ids = params[:hoge_id].split(/\R/)
# DBから、数値が同じIDかつステータスがdraftのデータを検索してきて、
huga = Model.where(id: hoge_ids, status: :draft)
# update_all で、データを一括で更新する
huga.update_all(status: :published, published_at: Time.current)
参考