Class/Module Index [+]

Quicksearch

AbstractController::Layouts::ClassMethods

Public Instance Methods

_implied_layout_name() click to toggle source

If no layout is supplied, look for a template named the return value of this method.

Returns

  • String - A template name

# File lib/abstract_controller/layouts.rb, line 236
def _implied_layout_name
  controller_path
end
_write_layout_method() click to toggle source

Creates a _layout method to be called by _default_layout .

If a layout is not explicitly mentioned then look for a layout with the controller’s name. if nothing is found then try same procedure to find super class’s layout.

# File lib/abstract_controller/layouts.rb, line 244
def _write_layout_method
  remove_possible_method(:_layout)

  case defined?(@_layout) ? @_layout : nil
  when String
    self.class_eval %{def _layout; #{@_layout.inspect} end}, __FILE__, __LINE__
  when Symbol
    self.class_eval             def _layout              #{@_layout}.tap do |layout|                unless layout.is_a?(String) || !layout                  raise ArgumentError, "Your layout method :#{@_layout} returned \#{layout}. It " \                    "should have returned a String, false, or nil"                end              end            end, __FILE__, __LINE__ + 1
  when Proc
    define_method :_layout_from_proc, &@_layout
    self.class_eval %{def _layout; _layout_from_proc(self) end}, __FILE__, __LINE__
  when false
    self.class_eval %{def _layout; end}, __FILE__, __LINE__
  when true
    raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
  when nil
    if name
      _prefixes = _implied_layout_name =~ /\blayouts/ ? [] : ["layouts"]

      self.class_eval               def _layout                if template_exists?("#{_implied_layout_name}", #{_prefixes.inspect})                  "#{_implied_layout_name}"                else                  super                end              end, __FILE__, __LINE__ + 1
    end
  end
  self.class_eval { private :_layout }
end
inherited(klass) click to toggle source
# File lib/abstract_controller/layouts.rb, line 177
def inherited(klass)
  super
  klass._write_layout_method
end
layout(layout, conditions = {}) click to toggle source

Specify the layout to use for this class.

If the specified layout is a:

String

the String is the template name

Symbol

call the method specified by the symbol, which will return

the template name

false

There is no layout

true

raise an ArgumentError

Parameters

  • String, Symbol, false - The layout to use.

Options (conditions)

  • :only - A list of actions to apply this layout to.

  • :except - Apply this layout to all actions but this one.

# File lib/abstract_controller/layouts.rb, line 221
def layout(layout, conditions = {})
  include LayoutConditions unless conditions.empty?

  conditions.each {|k, v| conditions[k] = Array(v).map {|a| a.to_s} }
  self._layout_conditions = conditions

  @_layout = layout || false # Converts nil to false
  _write_layout_method
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.