accepts_nested_attributes_for, FormOptionsHelper.selectのauxiliary hidden field
dhhがaccepts_nested_attributes_forをkillしたがってる件
https://github.com/rails/rails/pull/26976#pullrequestreview-8449983
代替としてはActiveModel内に頑張って書いていく
form helperのselectのauxiliary hidden field
multiple: true
にする場合は補助的なhiddenタグがデフォルトで追加されます。
この挙動が不要な場合はinclude_hidden: false
で無効にすることができます。
html.erb
<%= form_with do |form| %> <%= form.select("person_name", ["佐藤", "鈴木", "高橋"], {}, { multiple: true }) %> <% end %>
htmlの出力結果
<form action="/home/form_options_helper_select" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="xxxx" autocomplete="off" /> <input name="person_name[]" type="hidden" value="" autocomplete="off" /><select multiple="multiple" name="person_name[]" id="person_name"><option value="佐藤">佐藤</option> <option value="鈴木">鈴木</option> <option value="高橋">高橋</option></select> </form>
rails cでも確認できる
[35] pry(main)> helper.select("post", "person_name", ["佐藤", "鈴木", "高橋"], {}, { multiple: true }) => "<input name=\"post[person_name][]\" type=\"hidden\" value=\"\" autocomplete=\"off\" /><select multiple=\"multiple\" name=\"post[person_name][]\" id=\"post_person_name\"><option value=\"佐藤\">佐藤</option>\n<option value=\"鈴木\">鈴木</option>\n<option value=\"高橋\">高橋</option></select>"