LoginSignup
0
1

More than 5 years have passed since last update.

Rails, CoffeeScript, 任意のページで自動的にページ移動する

Last updated at Posted at 2019-03-19

目的

・任意のページで、数秒後に自動的に任意のURLへジャンプする
よくある
"数秒後に自動的に移動します。自動的に移動しない場合はこちらへ"
みたいなやつです。

とりあえずコード書かにゃ

そのまま書いたら以下の様になると思うんですよ。

js.coffee
  redirectToSomewhere = ->
    setTimeout ->
      window.location.href = <リダイレクト先のURL>
    , 5000 # 5秒後に移動

RailsはJSというJSなんでもかんでも実行する

Railsはassets/javascripts/の中にある.jsファイルを全部実行するから
「このページだけで実行」とかできないんですよね、いぁconfigの中でなんやかんややればできるっぽいことは噂に聞きますが。めんどい
任意のページに<script>埋め込むというやりかたもあるけどできればやりたくない。
※全然関係無いですけどQiitaって<script>て書いたらそのままタグとして認識されるんですね

特定のIDを持っているリンクがあるときだけ実行する

結果として以下みたいな感じでやりました。

html.slim
= link_to '自動的に移動しない場合はこちらをクリック', <リダイレクト先のURL>, id: <特定のID>

みたいに書いてjsで

js.coffee
  redirectToSomewhere = ->
    url = $("#<特定のID>").attr("href")
    if url
      setTimeout ->
        window.location.href = <リダイレクト先のURL>
      , 5000 # 5秒後に移動

て書いた、ページ内に特定のIDをもったaタグがあれば自動的に移動します的な感じです。
欠点として、間違って同じIDをどっか違うところにも使ってしまう感じにすると容赦なく飛ばされる感じの素敵な感じになっています。

もっといい方法だれか教えてください。

0
1
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
0
1