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

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

関連記事

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

ruby on railsのckeditorの画像のアップロード先をcarrierwaveとfogを使ってS3にする

概要 railsのckeditorはデフォルトでrailsのuploadsフォルダにアップロードしますが、 それだとサーバの容量を取ってしまうので、画像のアップロード先をS3に上げてみたいと思います。 …

ruby on rails のckeditor gemの機能ボタンをカスタマイズする

概要 みなさんこんにちはcandleです。今回はruby on rails のckeditor gemのショートカットボタンをカスタマイズして自分が必要な機能のみを表示してみましょう。 前提 cked …

basscss v8以降にv7以前のスタイルを追加する(自分用メモ)

概要 みなさんこんにちはcandleです。今回はbasscssのv8でかなりデフォルトのスタイルから削除されてしまったスタイルをインポートします。 v7以降からbasscssのスタイルはかなり分割され …

railsのform_forとstrong parametersを使用してpdfをアップロードする

概要 みなさんこんにちはcandleです。今回はrailsのform_forを使って、railsプロジェクトのpublicディレクトリにpdfファイルをアップロードしてみましょう。 form_forは …

  • English
  • 日本語

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