はじめに
Railsで配列形式のデータ(例えば、tag_ids)をフォームから受け取る方法についての記事です。
具体的なパラメータ構造を以下に示します。
params =>
{
"article"=>
{
"title"=>"title",
"tag_ids"=>["1","2"]
}
}
本記事では、tag_idsが配列としてどのようにフォームから受け取られるかを解説します。
動作環境
ruby : 3.1.4
rails : 7.0.8
どういうケースを想定している?
今回は、多対多の関係を持つテーブルを想定しています。
例としては、以下ER図にあるように、記事(Article)とタグ(Tag)に対して中間テーブル(ArticleTags)が存在しているケースです。
実装
form_with ヘルパーを使ってフォームを設定し、
text_field_tag を使用して tag_ids の配列を作成します。
<%= form_with(model: @article, local: true) do |form| %>
<%= form.text_field :title %>
<br>
<%# 以下タグは必要な配列分増やしてください。 %>
<%= text_field_tag 'article[tag_ids][]'%>
<br>
<%= form.button "Submit",type: "submit" %>
<% end %>
- text_fieldとtext_field_tagの違いについては以下記事参照
まとめ
本記事では、Railsで多対多の関連を持つテーブルを操作する際に、配列形式でパラメータを受け取る方法について説明しました。