こんにちは、現役沖縄フリーランスエンジニアの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"=>"送信"}
以上です。