Module: NgOnRailsHelper

Defined in:
app/helpers/ng_on_rails_helper.rb

Instance Method Summary collapse

Instance Method Details

#locals_to_json(ng_data) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/helpers/ng_on_rails_helper.rb', line 2

def locals_to_json ng_data
  j = ActiveSupport::JSON
  locals_hash = {}
  instance_variable_names.each do |var_name|
    unless !!var_name.match(/^@_/)
      unless ignorables.include? var_name
        name = var_name.gsub("@","")
        instance_var = instance_variable_get(var_name)
        unless instance_var.blank?
          if ng_data.blank?
            rv = instance_var
          else
            unless ng_data[name] == "IGNORE"                
              if instance_var.is_a?(ActiveRecord::Base) || instance_var.is_a?(ActiveRecord::Relation)
                if !ng_data[name]
                  if !!ng_data["BUILD"]
                    rv = build(name,instance_var)
                  else
                    rv = instance_var
                  end
                elsif ng_data[name]=="BUILD"
                  rv = build(name,instance_var)
                elsif ng_data[name].class==Hash
                  path = ng_data[name][:path]
                  model_name = ng_data[name][:as] || name
                  rv = build(model_name,instance_var,path)
                else
                  rv = instance_var
                end
              else
                rv = instance_var
              end
            end
          end
          unless !defined?(rv) || rv.blank?
            if (rv.is_a?(String) && !is_json?(rv)) || rv.is_a?(Numeric)
              locals_hash[name] = rv
            elsif is_json?(rv)
              locals_hash[name] = j.decode(rv)
            else
              locals_hash[name] = j.decode(rv.to_json)
            end
          end  
        end
      end
    end
  end
  return escape_javascript(locals_hash.to_json)
end