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

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

関連記事

MAMPのSQLiteManagerを使用してsqlite3のテーブルの作成とフィールドの設定、レーコードの挿入を試す

概要 みなさんこんにちはcandleです。前回と引き続き、SQLiteManagerを使用してsqlite3を試してみましょう。 はじめに、書いておきますが、MAMPのSQLiteManagerはSQ …

React NativeでGoogle Chrome上でのデバッグ時に動作が遅くなる場合の対処

English 日本語 概要 みなさんこんにちはcandleです。 今回はReact NativeのデバッグでChromeを使うと シミュレーターの動作が遅くなってしまう問題を対処します。 とは言って …

MAMPのPHPからSQLite3データベースにアクセスして値を取得する

概要 みなさんこんにちはcandleです。MAMPのSQLiteデータベースとテーブルを作成して、レコードも挿入した事なので、値を取得してみましょう。 前提 phpのバージョンが5.3以上である SQ …

MysqlのSELECT FROMの結果を美しく、見やすく表示する

概要 みなさんこんにちはcandleです。今回はmysqlのデータベースに関する簡単な記事です。 データベース系の言語は最近、様々出てきましたが、私は未だにMysqlくらいしか触っていません。 私はp …

fluentdでrails logをtailで直接取得する方法

概要 追記) この記事はだいぶ古くなってしまったので、新しく書き直しました。 こちらの方を参照した方が多分良いことが書いてあります。 https://joppot.info/2017/03/17/35 …

  • English
  • 日本語

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