LoginSignup
2
4

More than 5 years have passed since last update.

turbolinksのせいで、setIntervalが全ページに反映されてしまった!!

Last updated at Posted at 2017-05-21

概要

  • jQueryでsetIntervalを使い、ページのreload(自動更新)機能を作ろうとしていました。
  • reload(自動更新)したかったのは、indexページだけだったのですが、turbolinksというrailsにもともと備わっている機能のせいで、全ページにreload(自動更新)機能が発生・・・・・・
  • その解決法を説明。

turbolinksについて

解決したコード

reload.js
  function reload() {
   中略
  }

  var pathname = location.pathname.match(/messages/)
  var reg = RegExp(pathname);
  if(reg.test("messages")){
    setInterval(reload,60000)
  }

  • こうすると、URLにmessagesが含まれているページだけで(自分が作っているアプリでは,messagesをURLに持つビューはindexのみ)、setIntervalが発火する。

コードの説明

var pathname = location.pathname.match(/messages/)
  • location.pathnameで現在いるページのパスが取れる。.match(/messages/)でその中から、messagesを抽出する。
var reg = RegExp(pathname);
  • 変数pathnameを正規表現化する(この後、testを使うため。)
  if(reg.test("messages")){
    setInterval(reload,60000)
  }
  • 正規表現(reg).test("文字列")で,regに文字列が含まれている場合、trueを含まれていないとき、falseを返す。
  • 今回だと、regにmessagesが含まれていると、trueになり、setIntervalが発火する。
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4