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 |
# 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) # 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
143 144 145 |
# File 'lib/cms/behaviors/rendering.rb', line 143 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.
148 149 150 151 152 |
# File 'lib/cms/behaviors/rendering.rb', line 148 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 |