はじめに
Railsの5.1以降はform_with
が推奨されform_for
、form_tag
に別れていたのがform_with
に統合されます。自社サービスファform_for
のままだったのでform_with
にリファクタする課程で調べたノウハウを記載していきます。
まだ着手したばかりなので、追記していくかもしれません。
やったこと
元々の実装
form_for @model, url: action_path do |f|
form_withに変更
form_with model: @model, url: action_path, local: false do |f|
- 第一引数に指定していたオブジェクトを
model
オプションに設定 - デフォルトが非同期通信になったため、
local
オプションにfalse
を設定
非同期通信を多用しているサービスなら、デフォルトがlocal: true
で良いと思いますが、参画しているサービスはあまりなかったため、デフォルトをfalse
にしたいということで、以下をconfig/environment/*.rb
に設定しました。
config.action_view.form_with_generates_remote_forms = false
configレベルでの設定になるんですね。
ここでcheckbox
がlabel
と紐づいてないことに気づきました。label for=""
のことです。
config.action_view.form_with_generates_ids = true
1個ずつidを割り振ると対応が大変なのですが、config
に常軌を設定すると自動でidの発行・紐づけをしてくれます。
最後に
リファクタを進めてわかった点は追記していこうと思います。
config
周りはトラップな印象を受けました。廃止された時、リファクタ対応をしておかなければ対応が大変だったと思いました。先に着手しておいてよかったです。