joppot

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

プログラミング

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

投稿日:

Pocket

tu4839gj0we4j

概要

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

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

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

前提

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

SPONSORED LINK


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

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

関連記事

MAMP2.2上でのPHP5.3.27のpearの使い方と動作確認

概要 みなさんこんにちはcandleです。今回はMAMPのpearの使い方と動作確認です。 pearというのはphpのライブラリ群の様なもので、便利なライブラリがそろっています。 中にはなぜ、これがp …

Mac OS 10.9 MarvericksにHomebrewでOpencv2.4.7をインストールする

概要 みなさんこんにちはcandleです。今回はhomebrewを使用してopencvをインストールします。 前回macports経由でインストールする方法がうまくいかない事を記事にしましたが今回の方 …

wordpressのbogoプラグインのショートコードをカスタマイズする

English 日本語 概要 みなさんこんにちはcandleです。 今回はwordpress bogoのショートコードをカスタマイズしてみたいと思います。 紹介する項目は以下の2つです。 国旗の表示、 …

railsのroutesでhttpのGETやPOSTを指定してルーティングを表示する

概要 みんさんこんにちはcandleです。今回は少し頭をひねれば分かる事ですが、少し迷ったので、記事にまとめました。 railsですごいwebアプリケーションを作っていると、ルーティングが複雑きわまり …

fabricでmysqlコマンドを実行する関数を自作する

概要 皆さんこんにちはcandleです。今回はfabricからリモート先のサーバのmysqlを実行するための環境変数と関数を作成したいと思います。 mysqlは一般にmysqlコマンドをログインしてか …

  • English
  • 日本語

プロフィール


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

スポンサードリンク

アーカイブ