method

parse_render_from_options

parse_render_from_options(options_hash)
private

No documentation available.

# File actionview/lib/action_view/render_parser/ripper_render_parser.rb, line 260
        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