Class: Cms::ViewContext
- Inherits:
-
ActionView::Base
- Object
- ActionView::Base
- Cms::ViewContext
- Defined in:
- app/models/cms/view_context.rb
Overview
Trying to get rendering working:
Things that need to happen:
-
Need to add all helpers from that the Cms::ContentController has access to:
-
Add helpers for the portlet or content block
Understanding how Cms::ContentController renders a template:
-
It starts with a layout, which is a CMS template.
-
show.html.erb is called, which iterates over the connectables, adding content_for for each of the yields.
TODOS There are currently way to many values getting copied into this view, including:
content_block (desired) - From ContentController
content - An attribute of the block itself.
Instance Method Summary collapse
-
#cms ⇒ Object
Returns the routes for the Cms::Engine for view that need to access them.
-
#content_for(name, content = nil, &block) ⇒ Object
We want content_for to be called on the controller’s view, not this inner view.
-
#initialize(controller, attributes_to_assign) ⇒ ViewContext
constructor
A new instance of ViewContext.
Constructor Details
#initialize(controller, attributes_to_assign) ⇒ ViewContext
Returns a new instance of ViewContext.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/models/cms/view_context.rb', line 21 def initialize(controller, attributes_to_assign) @controller = controller super(@controller.view_paths, attributes_to_assign, @controller) helpers = controller.class._helpers self.class.send(:include, helpers) # Make all Route helpers available in the view, i.e. cms_xyz_path and cms_xyz_url self.class.send(:include, Cms::Engine.routes.url_helpers) # Need to add Cms::PageRoute helpers to the view self.class.send(:include, Rails.application.routes.url_helpers) # See what values are getting copied into template # Rails.logger.warn "Assigned these variables: #{attributes_to_assign}" end |
Instance Method Details
#cms ⇒ Object
Returns the routes for the Cms::Engine for view that need to access them.
47 48 49 |
# File 'app/models/cms/view_context.rb', line 47 def cms Cms::Engine.routes.url_helpers end |
#content_for(name, content = nil, &block) ⇒ Object
We want content_for to be called on the controller’s view, not this inner view
41 42 43 44 |
# File 'app/models/cms/view_context.rb', line 41 def content_for(name, content=nil, &block) Rails.logger.warn "content_for(#{name}, #{content}, block) called." @controller.instance_variable_get("@template").content_for(name, content, &block) end |