問題タブ [hotwire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
145 参照

ruby-on-rails - Rails アプリケーションのすべてのフォームで Hotwire / Turbo (Turbolinks の代替) を無効にするにはどうすればよいですか?

Rails 7 では、Turbolinks は Hotwire / Turbo に置き換えられました。これは Web リンクにパッチを当てて、Turbolinks と同じように AJAX スタイルのリクエストにするだけでなく、フォームにもパッチを当てます。全体として、これがアプリケーションの一部を壊すことがわかりました。

  • ある種の JS ビヘイビアーが既に関連付けられているフォームが競合していました。
  • 標準的な Rails のエラー処理イディオム - "set the flashand render :new/ render :edit" - 驚くほど壊れます。指を追加status: :unprocessable_entityして交差させる必要があります。
  • フォーム送信を処理するコントローラーがパッチ アンカー ( ) を含む URL にリダイレクトする場合...#foo、Turbo はそれを取り除きます。

data: {turbo: false}最終的には、コード ベース全体に分散させることが理にかなっているほどの量しかありません。さらに悪いことに、SimpleForm を使用しているため、これはさらに扱いにくくなりhtml: {data: {turbo: false}}ます。

フォームに対してのみTurbo を _globally 無効にする方法はありますか(理想的には、フォームの起源に関係なくすべての<form>フォーム -タグとその中のすべてを完全にそのままにしてください)、残りの動作は変更しませんか?