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

このブログでは、フリーランス6期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

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

※提携先の広告(リンク、バナー等)を含む場合があります


こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


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


について書いていきます。


【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"=>"送信"}


以上です。