class JbuilderTemplate - jbuilder-1.5.3 Documentation

# class JbuilderTemplate

### Attributes

template_lookup_options[RW]

### Public Class Methods

new(context, *args, &block) click to toggle source
Calls superclass method Jbuilder.new

    # File lib/jbuilder/jbuilder_template.rb, line 11
    def initialize(context, *args, &block)
      @context = context
      super(*args, &block)
    end

### Public Instance Methods

array!(collection = [], *attributes, &block) click to toggle source
Calls superclass method Jbuilder#array!

    # File lib/jbuilder/jbuilder_template.rb, line 34
    def array!(collection = [], *attributes, &block)
      options = attributes.extract_options!

      if options.key?(:partial)
        partial! options[:partial], options.merge(:collection => collection)
      else
        super
      end
    end

cache!(key=nil, options={}) { |self| ... } click to toggle source

Caches the json constructed within the block passed. Has the same signature as the `cache` helper method in `ActionView::Helpers::CacheHelper` and so can be used in the same way.

Example:

    json.cache! ['v1', @person], expires_in: 10.minutes do
      json.extract! @person, :name, :age
    end

    # File lib/jbuilder/jbuilder_template.rb, line 52
    def cache!(key=nil, options={}, &block)
      if @context.controller.perform_caching
        value = ::Rails.cache.fetch(_cache_key(key), options) do
          _scope { yield self }
        end

        _merge(value)
      else
        yield
      end
    end

partial!(name_or_options, locals = {}) click to toggle source

    # File lib/jbuilder/jbuilder_template.rb, line 16
    def partial!(name_or_options, locals = {})
      case name_or_options
      when ::Hash
        # partial! partial: 'name', locals: { foo: 'bar' }
        options = name_or_options
      else
        # partial! 'name', foo: 'bar'
        options = { :partial => name_or_options, :locals => locals }
        as = locals.delete(:as)
        options[:as] = as if as.present?
        options[:collection] = locals[:collection] if locals.key?(:collection)
      end

      options[:collection] ||= [] if options.key?(:collection)

      _handle_partial_options options
    end

### Protected Instance Methods

_cache_key(key) click to toggle source

    # File lib/jbuilder/jbuilder_template.rb, line 86
    def _cache_key(key)
      if @context.respond_to?(:cache_fragment_name)
        # Current compatibility, fragment_name_with_digest is private again and cache_fragment_name
        # should be used instead.
        @context.cache_fragment_name(key)
      elsif @context.respond_to?(:fragment_name_with_digest)
        # Backwards compatibility for period of time when fragment_name_with_digest was made public.
        @context.fragment_name_with_digest(key)
      else
        ::ActiveSupport::Cache.expand_cache_key(key.is_a?(::Hash) ? url_for(key).split('://').last : key, :jbuilder)
      end
    end

_handle_partial_options(options) click to toggle source

    # File lib/jbuilder/jbuilder_template.rb, line 65
    def _handle_partial_options(options)
      options.reverse_merge! :locals => {}
      options.reverse_merge! ::JbuilderTemplate.template_lookup_options
      collection = options.delete(:collection)
      as = options[:as]

      if collection && as
        array!(collection) do |member|
          options[:locals].merge!(as => member, :collection => collection)
          _render_partial options
        end
      else
        _render_partial options
      end
    end

_render_partial(options) click to toggle source

    # File lib/jbuilder/jbuilder_template.rb, line 81
    def _render_partial(options)
      options[:locals].merge!(:json => self)
      @context.render options
    end

### Private Instance Methods

_mapable_arguments?(value, *args) click to toggle source
Calls superclass method Jbuilder#_mapable_arguments?

    # File lib/jbuilder/jbuilder_template.rb, line 101
    def _mapable_arguments?(value, *args)
      return true if super
      options = args.last
      ::Hash === options && options.key?(:as)
    end