0

Turbolinks を使用する Rails のビューに JavaScript を埋め込んでいます。

ViewX.html.haml:

.blah
  Blah

:javascript
 $(function() {
   $(".blah").offset().top;
 });

ViewX をロードすると、すべて正常に動作します。しかし、View YI に移動すると、コンソールに次のエラーが表示されます。

Uncaught TypeError: Cannot read property 'top' of undefined

そして、他のビューに移動しても、そのエラーは持続します。ハード リフレッシュを実行すると消えますが、次に ViewX をレンダリングすると元に戻ります。

私の質問は、一部の JS スニペットを特定のビューに対してのみレンダリングし、アプリの残りの部分を汚染しないようにするにはどうすればよいですか?

編集

わかりました、私は方法を考え出しました。これはややハックですが、封じ込められたハックです。ViewX.html.haml を次のように変更します。

ViewX.html.haml:

.blah
  Blah

%script{:type => "text/javascript", 'data-turbolinks-eval' => 'false'}
 :plain
   $(function() {
     $(".blah").offset().top;
   });
4

1 に答える 1