lib/active_view/layouts.rb
# 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.
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.
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 .
def _write_layout_method 
        remove_possible_method(:_layout)
        prefixes    = _implied_layout_name =~ /\blayouts/ ? [] : ["layouts"]
        default_behavior = "lookup_context.find_all('#{_implied_layout_name}', #{prefixes.inspect}).first || super"
        name_clause = if name
          default_behavior
        else
          <<-RUBY
            super
          RUBY
        end
        layout_definition = case _layout
          when String
            _layout.inspect
          when Symbol
            <<-RUBY
              #{_layout}.tap do |layout|
                return #{default_behavior} if layout.nil?
                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
            RUBY
          when Proc
            define_method :_layout_from_proc, &_layout
            protected :_layout_from_proc
            <<-RUBY
              result = _layout_from_proc(#{_layout.arity == 0 ? '' : 'self'})
              return #{default_behavior} if result.nil?
              result
            RUBY
          when false
            nil
          when true
            raise ArgumentError, "Layouts must be specified as a String, Symbol, Proc, false, or nil"
          when nil
            name_clause
        end
        self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
          def _layout
            if _conditional_layout?
              #{layout_definition}
            else
              #{name_clause}
            end
          end
          private :_layout
        RUBY
      end
def _write_layout_method remove_possible_method ( :_layout ) prefixes = _implied_layout_name =~ / \b layouts / ? [ ] : [ "layouts" ] default_behavior = "lookup_context.find_all('#{_implied_layout_name}', #{prefixes.inspect}).first || super" name_clause = if name default_behavior else <<-RUBY 
            super
           RUBY end layout_definition = case _layout when String _layout . inspect when Symbol <<-RUBY #{ _layout } .tap do |layout|
                return  #{ default_behavior }  if layout.nil?
                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
             RUBY when Proc define_method :_layout_from_proc , & _layout protected :_layout_from_proc <<-RUBY 
              result = _layout_from_proc( #{ _layout . arity == 0 ? '' : 'self' } )
              return  #{ default_behavior }  if result.nil?
              result
             RUBY when false nil when true raise ArgumentError , "Layouts must be specified as a String, Symbol, Proc, false, or nil" when nil name_clause end self . class_eval <<-RUBY , __FILE__ , __LINE__ + 1 
          def _layout
            if _conditional_layout?
               #{ layout_definition } 
            else
               #{ name_clause } 
            end
          end
          private :_layout
         RUBY end
Creates a _layout method to be called by _default_layout .
Creates a _layout method to be called by _default_layout .
# :nodoc: