Sha256: 854b0f7d0fd4cce7a4a53aceabd347af7c97ab3e76b5b9340cd7faffe17efe1b

Contents?: true

Size: 1.27 KB

Versions: 7

Compression:

Stored size: 1.27 KB

Contents

module Pageflow
  module RenderJsonHelper
    # Renders `image_files/_image_file.json.jbuilder` when given a
    # collection of `ImageFile` records.
    def render_json_seed(records, options = {})
      if records.respond_to?(:to_model)
        name = records.to_model.class.model_name.to_s.split('::').last.underscore.downcase
        render_json_partial(['pageflow/editor', name.pluralize, name.singularize] * '/', name.singularize.to_sym => records)
      else
        return '[]'.html_safe if records.empty?
        name = records.first.to_model.class.model_name.to_s.split('::').last.underscore.downcase
        render_json_partial(['pageflow/editor', name.pluralize, name.singularize] * '/', :collection => records, :as => name.singularize.to_sym)
      end
    end

    def render_json_partial(*args)
      render_with_format(:json) do
        JbuilderTemplate.encode(self) do |json|
          json.partial!(*args)
        end.html_safe
      end
    end

    def render_html_partial(*args)
      render_with_format(:html) do
        render(*args)
      end
    end

    def render_with_format(format, &block)
      old_formats = formats
      self.formats = [format] # hack so partials resolve with json not html format
      yield
    ensure
      self.formats = old_formats
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
pageflow-0.6.0 app/helpers/pageflow/render_json_helper.rb
pageflow-0.5.0 app/helpers/pageflow/render_json_helper.rb
pageflow-0.4.0 app/helpers/pageflow/render_json_helper.rb
pageflow-0.3.0 app/helpers/pageflow/render_json_helper.rb
pageflow-0.2.1 app/helpers/pageflow/render_json_helper.rb
pageflow-0.2.0 app/helpers/pageflow/render_json_helper.rb
pageflow-0.1.0 app/helpers/pageflow/render_json_helper.rb