/ #Rails 

form_for ヘルパーから form_with ヘルパーへの変更

Rails 5.1 で追加された form_with というヘルパーがあります。
従来の、form_for form_tag に換わる新機能です。
form_for form_tag は将来廃止されるらしいので今のうちに備えておきましょう。

form_for の場合は、以下の書き方で大抵置き換えできます。

before:

<%= form_for(@user, url: user_path, html: {}) do |f| %>

after:

<%= form_with(model: @user, url: user_path, local: true, html: {}) do |f| %>
  • ActiveRecord オブジェクトの指定がハッシュ形式(model: @user)になっています。
  • 非同期通信ではないタグを書き出す local: true をつける。

これだけで済むので(おそらく)ぜひ書き換えてみましょう。

このようにお手軽な form_with ですが、移行の際にハマりポイントもあるので紹介しておきます。

id、class 属性の指定位置が変わっている & (バージョンによっては)デフォルトで出してくれない
id class 属性が、htmlオプション中での指定だったものが、外に出されました。
また、Railsのバージョンによってはデフォルトの id 属性がつかなくなりました。 RspecやJSでセレクタでの参照をしている場合は要注意です。

非同期通信がデフォルトになっている
local: true を忘れると小一時間悩みます。
エラーは出ないけど、画面遷移しないときは忘れていることが多いです。

以上簡単な紹介でした。
Have a nice rail!