0
0

Railsで複数の隠しフィールドを正しく送信する方法

Posted at

Railsでフォームを扱う際には、しばしば複数のデータを同時に送信する必要があります。特に、複数選択可能なデータ(例えば、複数のサービスID)を扱う場合、これを隠しフィールドとして正しく送信する方法が重要です。

問題点

hidden_field を使用して配列データを送信しようとするとき、単一のフィールドで配列を渡そうとすると問題が生じます。以下のように書いた場合、

<%= form.hidden_field :service_ids, multiple: true, value: @services.map(&:id) %>

このコードは期待した通りには動作せず、配列が文字列として解釈され、結果的には "["3", "20"]""["3 20"] のような一つの文字列として送信されてしまいます。

解決策

この問題を解決するには、各要素に対して個別の hidden_field を出力する方法が最も簡単です。具体的には以下のようにします。

<% @services.each do |service| %>
  <%= form.hidden_field :service_ids, multiple: true, value: service.id %>
<% end %>

この方法で、service_ids パラメータは ["3", "20"] のような形式の配列として正しく送信されます。

まとめ

Railsで複数の値を含むパラメータを隠しフィールドとして扱う場合は、各値に対して個別のフィールドを用意することが重要です。このシンプルなテクニックで、多くの複雑な問題を解決することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0