gonとSettingsLogicを使ってCoffeeScript(javascript)でもRailsの定数を定義する

この記事は、newsdict.hatenablog.jp から移設しました。

Railsとjavascript内で共通で使える定数したい時があると思います。今回はgonとSettingsLogicを使用してconfig/constats.ymlに定義される定数を使えるようしました。

constants.yml内で定義するConstants.javascript配下の配列がgonに渡され使用可能となります。

app/models/constants.rb

class Constants < Settingslogic
  source "#{Rails.root}/config/constants.yml"
  namespace Rails.env
end

config/constants.yml

defaults:
  javascript:
    hoge:
      fuga: 1
development:
  <

app/controller/application.rb

class ApplicationController < ActionController::Base
  before_filter :set_gon

  private
  def set_gon
    Constants.javascript.each do |key, value|
      gon.set_variable(key, value)
    end
  end
end

app/controller/api/test.rb

class Api::TestController
  def test
    render :json => Constants.javascript.hoge.fuga
  end
end

app/assets/javascript/application.js.coffee

alert(gon.hoge.fuga)

SeggingsLogic (gem) について
SeggingsLogicは、Rails内で共通に使える変数をconfig/constants.yml配下などで定義できます。

gon(gem) について
CoffeeScript内でRailsから渡した変数を使えるようにするgemです。

コメントを残す

メールアドレスが公開されることはありません。