スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails5】form_withでhidden_fieldを使って、値を配列で送信したい

hidden_fieldだと動かない。

今回の場合、hidden_field_tag を使うことで対応出来た。

hidden_field_tag (ActionView::Helpers::FormTagHelper) - APIdock

• 第一引数 name属性

• 第二引数 送信したい値

例.

= form_with url: '/articles' do |f|
  = hidden_field_tag 'hoge_item[]', 1
  = f.submit '送信'

これは下記のように送信されます。

#=> "hoge_item"=>["1"]
配列内に複数の値を入れて送信したい場合

hidden_field_tagを複数設置してやれば可能。 ループすれば応用効きそうです。

= form_with url: '/articles' do |f|
  = hidden_field_tag 'hoge_item[]', 1
  = hidden_field_tag 'hoge_item[]', 2
  = hidden_field_tag 'hoge_item[]', 3
  = f.submit '送信'

これは下記のように送信されます。

#=> "hoge_item"=>["1", "2", "3"]
Started POST "/articles" for ::1 at 2020-01-08 21:39:47 +0900
Processing by ArticlesController#create as JS
  Parameters: {"authenticity_token"=>"JpIUpNwxFUYgUuKUnlE3VB0frKJCiDdX3XQdbxhXBku7M5WG6AsgIE9G3AKqp++KHAfhkg3vZ5sQCDZJVZSorw==", "hoge_item"=>["1", "2", "3"], "commit"=>"送信"}
参考

formのinput valueを配列で受け取りたい場合のname属性

https://qiita.com/roba4coding/items/c2bcd51d1d4200dd26d9

HTMLのフォームでhiddenに配列を持たせる

https://blog.4star.link/?p=1196