joppot

コピペで絶対動く。説明を妥協しない

プログラミング

railsのcoffee scriptをurl判定をして実行をする方法

投稿日:


tu4839gj0we4j

概要

みなさんこんにちはcandleです。
今回はcoffeescriptを任意のURLで実行する様にする関数を作ります。

というのはrailsは最終的にassetspiplineでjavascriptファイルをひとまとめにするのですが、
そうなると、不本意なところでjavascriptが動いてしまう事が多々あります。

もちろん、だったら、誤作動しない様にコーディングするのが一番良いのでしょう。
ただ、私はjavascriptに慣れていないので、そこまで完璧なコードが書けません。
また、外部のjavascirptライブラリを使う場合はrailsのそういったものを想定していない事があるので、万が一の事も考えて使えると便利かもしれません。

前提

適当なrailsプロジェクトがある



url判定をする関数を作る

まずはrailsプロジェクトのapp/assets/javascripts/application.jsを開きます。
一番下に以下の関数を作成します。

function url_match(){
  var url = window.location.href;

  for (var i = 0; i < arguments.length; i++) {
    if(url.search(arguments[i]) < 0){
      return false;
    }
  }
  return true;
}

url_matchfunc

この関数がやっている事はurlを取得して、argumentsで実際に使う時に渡す可変長引全てに対して、
その引数がurlに含まれているかどうか判定しています。
引数の中の文字が1回でもurlに含まれていなければ、falseを返して、全て含まれていれば、trueを返します。


coffee scirptで使う

例えば、scaffoldを作成すると、それに準じたcoffeescriptが作成されると思います。
squireというscaffoldを作成した場合はsquire.js.coffeeが作られます。
ここに以下の様に書くと、squiresコントローラー内でのみcoffee scriptが実行されるようになります。

$(document).on 'ready page:load', ->
  if url_match('squires')
    console.log "ここはsquireのscaffoldだよ"

sorturlfunc

さらにアクションを指定したい場合はカンマで区切ってやれば良いでしょう。
作成した、関数は可変長引数なので、幾らでもurlの限定を加えられます。
この場合はAND検索になります。
下の場合はsquiresコントローラーのnewアクションとeditアクションでcoffeescriptが動作します。

$(document).on 'ready page:load', ->
  if url_match('squires','edit') || url_match('squires','new')
    console.log "squriesコントローラーのeditアクションかnewアクション"

moregoodsortfunc


まとめ

アセッツコンパイルは便利です。誤作動を極力抑え、よりバグ無く、高速なサービスを作りましょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

railsのaws-sdk gemを使ってs3のフォルダ(folder)を削除する

概要 みなさんこんにちはcandleです。今回はs3にあるフォルダを丸ごとrailsのaws-sdk gemを使用して削除してみたいと思います。 実はこの方法を確立するまですごく四苦八苦しました。なん …

reactで最もシンプルなドロップダウンメニューを作成

概要 みなさんこんにちはcandleです。今回はreactで最もシンプルなドロップダウンメニューを作ってみたいと思います。 前提 Reactの知識がある 準備 以下のコマンドでreactプロジェクトを …

ruby on railsのckeditor gemの使い方をscaffoldを用いて解説する

概要 みなさんこんにちはcandleです。今回はruby on railsのckeditorという素晴らしいgemを使って見たいと思います。 ckeditorとはweb版の高機能なwordとかテキスト …

Chart.js 2.0でy軸の最大値(scales max)と最小値を設定する

概要 みなさんこんにちはcandleです。今回はChart.js2.0でy軸の最大値、最小値を設定する方法を紹介します。 Chart.js 2.0では特に指定しないと自動的に、y軸の最大値を設定してく …

phpのsnappyライブラリをmacで使用して、webサイトのサムネイルを取得する

概要 みなさんこんにちはcandleです。今回はsnappyを使用して、ウェブサイトのサムネイルを自動的に取得したいとおもいます。 snappyはそれ自体がhtmlを画像にするスクリプトではなく、wk …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー