Railsのフォームで配列を扱う方法
fields_forとか便利メソッドを使って根本が理解できていないまま、 コードを書くのは応用が効かないので、シンプルに書く。
Webシステムではクライアントからサーバーにリクエストを投げるのにフォームを使う。 nameに指定したキーで値を取り出す。
同じnameのものを複数指定する場合は配列にする。 HTMLで表現すると以下のようになる。
<input type="text" name="name[]" id="name_" class="form-control"> <input type="text" name="name[]" id="name_" class="form-control"> <input type="text" name="name[]" id="name_" class="form-control">
これをRailsのフォームで書く場合はこう。
<% @items.each do |item| %> <%= text_field_tag 'name[]', item.name, class: "form-control" %> <% end %>
Railsではリクエストされた値を受け取るには params
を使う。
name => [1,2,3]
のような形式で受け取ることができる。