module JsVars::TagHelper

Public Instance Methods

js_vars_tag(default_namespace = 'APP') click to toggle source
# File lib/js_vars/tag_helper.rb, line 4
def js_vars_tag(default_namespace = 'APP')
  script_data = '' 

  JsVars::VarMap.get.each do |namespace, vars|
    namespace ||= default_namespace
    script_data += "if(!window.#{namespace}){ window.#{namespace} = {}};"
    script_data = vars.inject(script_data) {|s, (k, v)| s += "#{namespace}.#{k} = #{v.is_a?(String) ? v : v.to_json};" } if vars
  end

  return '' if JsVars::VarMap.empty?

  JsVars::VarMap.clear

  return script_data.html_safe if request.xhr?

  raw javascript_tag(jsvars: :jsvars){ script_data.html_safe }
end