40 lines
1013 B
Ruby
40 lines
1013 B
Ruby
module ActionController
|
|
module Layouts
|
|
extend ActiveSupport::DependencyModule
|
|
|
|
depends_on ActionController::Renderer
|
|
depends_on AbstractController::Layouts
|
|
|
|
module ClassMethods
|
|
def _implied_layout_name
|
|
controller_path
|
|
end
|
|
end
|
|
|
|
def render_to_body(options)
|
|
# render :text => ..., :layout => ...
|
|
# or
|
|
# render :anything_else
|
|
if (!options.key?(:text) && !options.key?(:inline) && !options.key?(:partial)) || options.key?(:layout)
|
|
options[:_layout] = options.key?(:layout) ? _layout_for_option(options[:layout]) : _default_layout
|
|
end
|
|
|
|
super
|
|
end
|
|
|
|
private
|
|
|
|
def _layout_for_option(name)
|
|
case name
|
|
when String then _layout_for_name(name)
|
|
when true then _default_layout(true)
|
|
when false, nil then nil
|
|
else
|
|
raise ArgumentError,
|
|
"String, true, or false, expected for `layout'; you passed #{name.inspect}"
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|