method

parse_render_from_options

Importance_0
v7.0.0 - Show latest stable - 0 notes - Class: RenderParser
parse_render_from_options(options_hash) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File actionview/lib/action_view/render_parser.rb, line 95
      def parse_render_from_options(options_hash)
        renders = []
        keys = options_hash.keys

        if (keys & RENDER_TYPE_KEYS).size < 1
          # Must have at least one of render keys
          return nil
        end

        if (keys - ALL_KNOWN_KEYS).any?
          # de-opt in case of unknown option
          return nil
        end

        render_type = (keys & RENDER_TYPE_KEYS)[0]

        node = options_hash[render_type]

        if node.string?
          template = resolve_path_directory(node.to_string)
        else
          if node.variable_reference?
            dependency = node.variable_name.sub(/\A(?:\$|@{1,2})/, "")
          elsif node.vcall?
            dependency = node.variable_name
          elsif node.call?
            dependency = node.call_method_name
          else
            return
          end

          object_template = true
          template = "#{dependency.pluralize}/#{dependency.singularize}"
        end

        return unless template

        if spacer_template = render_template_with_spacer?(options_hash)
          virtual_path = partial_to_virtual_path(:partial, spacer_template)
          renders << virtual_path
        end

        if options_hash.key?(:object) || options_hash.key?(:collection) || object_template
          return nil if options_hash.key?(:object) && options_hash.key?(:collection)
          return nil unless options_hash.key?(:partial)
        end

        virtual_path = partial_to_virtual_path(render_type, template)
        renders << virtual_path

        # Support for rendering multiple templates (i.e. a partial with a layout)
        if layout_template = render_template_with_layout?(render_type, options_hash)
          virtual_path = partial_to_virtual_path(:layout, layout_template)

          renders << virtual_path
        end

        renders
      end
Register or log in to add new notes.