Railsのform_withを別layoutに渡って展開する方法

layoutをDRYにするために...

例えばhead部分にsubmitボタンがあり、bodyにフォームがあるような場合。

通常であれば、body部分にsubmitボタンがあるので、

= form_with model: @user, url: user_path, local: true do |f|
 .name
  = f.text_field :name
 .submit
  = f.submit '登録する'

こういう感じでかけます。

でも、フォームが別layoutに分割される...

こんな感じでいけました。

= form_with model: @user, url: user_path, local: true do |f|
 = render 'form', { f: f, user: @user}
 = render 'submit', { f: f, user: @user }