Module: Cms::Behaviors::InstanceMethods
- Defined in:
- lib/cms/behaviors/rendering.rb
Instance Method Summary collapse
- #perform_render(controller) ⇒ Object
- #prepare_to_render(controller) ⇒ Object
- #render_exception=(exception) ⇒ Object
-
#should_render_self? ⇒ Boolean
Determines if a block should have its ‘render’ method called when it’s rendered within a page.
Instance Method Details
#perform_render(controller) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/cms/behaviors/rendering.rb', line 114 def perform_render(controller) return "Exception: #{@render_exception}" if @render_exception unless @controller # We haven't prepared to render. This should only happen when logged in, as we don't want # errors to bubble up and prevent the page being edited in that case. prepare_to_render(controller) end if self.respond_to?(:deleted) && self.deleted logger.error "Attempting to render deleted object: #{self.inspect}" msg = (@mode == 'edit' ? %Q[<div class="error">This #{self.class.name} has been deleted. Please remove this container from the page</div>] : '') return msg end # Create, Instantiate and Initialize the view action_view = Cms::ViewContext.new(@controller, assigns_for_view) add_content_helpers_if_defined(action_view) # Determine if this content should render from a file system template or inline (i.e. database based template) if respond_to?(:inline_options) && self. && self..has_key?(:inline) = self. locals = {} action_view.render(, locals) else action_view.render(:file => self.class.template_path) end end |
#prepare_to_render(controller) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/cms/behaviors/rendering.rb', line 99 def prepare_to_render(controller) # Give this renderable a reference to the controller @controller = controller copy_instance_variables_from_controller! # This gives the view a reference to this object instance_variable_set(self.class.instance_variable_name_for_view, self) # This is like a controller action # We will call it if you have defined a render method # but if you haven't we won't render if should_render_self? end |
#render_exception=(exception) ⇒ Object
145 146 147 |
# File 'lib/cms/behaviors/rendering.rb', line 145 def render_exception=(exception) @render_exception = exception end |
#should_render_self? ⇒ Boolean
Determines if a block should have its ‘render’ method called when it’s rendered within a page.
150 151 152 153 154 |
# File 'lib/cms/behaviors/rendering.rb', line 150 def should_render_self? # Reason to exist: This was added to work around the fact that Rails 3 AbstractController::Helpers defines its own # render method, which was conflicted with block's render methods. public_methods(false).include?(:render) end |