turbolinks 入れたら f.submit が効かなくなった件
2426 ワード
概要
本来関係ないはずなんだけど、元々のviewの書き方によってハマる例です。
今回は、<table>
の中の<tr>
の外に、<form>
を書いてたのがいけなかったです。
現象
諸事情により、今まで tubolinks 使ってなかった Railsプロジェクトに turbolinksを導入。
application.js
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks // <-追加
//= require select2 // <-追加
//= require turbolinks // <-追加
//= require_tree .
ajaxで動いてるところはサクッと動いたのに、なぜか、f.submit
のボタンが動かなくなる。
ボタン押しても、リクエストどころか、clickイベントも発火してない模様。
そして、同じページをリロードすると改善する(普通にボタンが動作する)。
原因
関係あるのは link_to
だけなハズなのに??? と理不尽に感じつつもいろいろ試し。
↓こちらで、invalid HTML の例が出ていたので気づけました。
app/views/some_models/_form.html.erb
<table>
<%= form_for(@some_models) do |f| %>
(中略)
<% end %>
</table>
こういう書き方だと、こんな風にレンダーされてました。
<table class="ta1">
<form accept-charset="UTF-8" action="/some_models/xxxxxxxxxx" class="edit_some_model" id="edit_some_model_xxxxxxxxxx" method="post"></form>
<tbody>
(中略)
</tbody>
</table>
<tbody>
の外で、<form>
が閉じちゃってますので、<tbody><tr><td>
の中に書いた <input type="submit">
は効かなったというワケです。
解決
<table>
の外に <form>
をもってくることで、解決しました。
<%= form_for(@titles) do |f| %>
<table>
(中略)
</table>
<% end %>
Author And Source
この問題について(turbolinks 入れたら f.submit が効かなくなった件), 我々は、より多くの情報をここで見つけました https://qiita.com/hc_isobe/items/cfe1f31319780e73cebe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .