#form actionにdata-remote="true"が追加されない...
Rails6.1でユーザーフォローボタンなどを非同期通信で実装したい!
そんな時はform_withの中にremote: true を指定してあげれば非同期通信が簡単にできるらしい!
viewファイル
form_with(model: ..., remote: true)
これで実際に生成されるHTMLのform actionにdata-remote="true"が追加されて非同期通信ができるようになる!
はずが...
実際に生成されたHTML
<form action="http://localhost:3000/" accept-charset="UTF-8" method="post">
あれ? data-remote="true"が追加されてないぞ?
#解決策:form_withにlocal: falseを指定する
実は、Rails6.0を使用している場合は上記の方法で非同期通信に対応できたのですが、Rails6.1ではそうはいかないようです。
Rails6.1で非同期通信に対応させるためにはremote: tureではなくlocal: falseを指定してあげるようにしましょう。
viewファイル
form_with(model: ..., local: false)
すると...
実際に生成されたHTML
<form action="http://localhost:3000/" accept-charset="UTF-8" data-remote="true" method="post">
form actionにdata-remote="true"が追加され、非同期通信ができるようになりました!
Railsのバージョンによる細かな違いはきちんと把握しないといけませんね。