6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

renderしてるのに画面が遷移しないのはform_withだから

Posted at

viewを持つcreateアクション、という、ちょっと変なコードを書いていて、
ログを見る限りrenderしているはずなのに、画面が遷移しない、という現象に出くわして、かなりハマってしまったので書いてみました。

form_withはデフォルトだとXMLHTTPRequestで通信してる

上記の現象の原因を探っていて、ログにJSが動いた形跡を見つけて、form_withの仕様によるものであることにたどり着きました。
form_withがデフォルトだとXMLHTTPRequestで通信しており、ゆえにrenderを書いても画面が遷移しない、ということがおこります。

ドキュメントのとおりです。
https://api.rubyonrails.org/v5.2.3/classes/ActionView/Helpers/FormHelper.html#method-i-form_with
ドキュメントのとおり、local: trueを渡せばちゃんと同期通信してくれます。

普段からform_withに慣れている人には特に違和感ない挙動なのだと思いますが、古いRailsのコードに慣らされてるせいで全然気づきませんでした。
どこかで同じようにハマった誰かがこの記事にたどり着きますよう。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?