1. ホーム
  2. javascript

[解決済み] Rails、link_toヘルパーをクリックした後にjavascriptがロードされない

2023-08-23 07:45:43

質問

railsでlink_toヘルパーを使用する際、javascriptの読み込みに問題があります。localhost:3000/products/new」でurlを手入力するか、ページを再読み込みするとjavascriptが読み込まれますが、下記のようにリンクを通すと、jQueryの $(document).ready は新しいページでは読み込まれません。

Link_to、このリンクをクリックしてもjavascriptが読み込まれません。

<%= link_to "New Product", new_product_path %>

products.jsファイル

$(document).ready(function() {
    alert("test");
});

どんな助けでも、とても感謝します。ありがとうございました。

どのように解決するのですか?

Rails 4を使用していますか? rails -v を実行してください)

この問題は、おそらく新しく追加された ターボリンク gem のせいだと思われます。 これは、アプリケーションをシングルページの JavaScript アプリケーションのように動作させるものです。 これにはいくつかの利点があります ( より高速になる のような既存のイベントを壊してしまいます。 $(document).ready() のような既存のイベントを壊してしまいます。 このことは、JavaScript が URL を直接読み込んだときには動作するが link_to .

ここでは RailsCast のTurbolinksについてです。

いくつかの解決策があります。 あなたが使用できるのは jquery.turbolinks を使うか、あるいは $(document).ready() ステートメントを、代わりにTurbolinksの 'page:change' イベントを使用します。

$(document).on('page:change', function() {
    // your stuff here
});

また、Turbolinksだけでなく、通常のページロードとの互換性を保つために、このようなこともできます。

var ready = function() {
    // do stuff here.
};

$(document).ready(ready);
$(document).on('page:change', ready);

Ruby on Rails >5を使用している場合(以下のコマンドを実行することで確認できます)。 rails -v を実行することで確認できます)。 'turbolinks:load' の代わりに 'page:change'

$(document).on('turbolinks:load', ready);