Method: Cell::Rails#render
- Defined in:
- lib/cell/rails.rb
#render(*args) ⇒ Object
Renders the view for the current state and returns the markup. Don’t forget to return the markup itself from the state method.
Options
:view-
Specifies the name of the view file to render. Defaults to the current state name.
:layout-
Renders the state wrapped in the layout. Layouts reside in
app/cells/layouts. :locals-
Makes the named parameters available as variables in the view.
:text-
Just renders plain text.
:inline-
Renders an inline template as state view. See ActionView::Base#render for details.
:file-
Specifies the name of the file template to render.
:nothing-
Doesn’t invoke the rendering process.
:state-
Instantly invokes another rendering cycle for the passed state and returns. You may pass arbitrary state-args to the called state.
:format-
Sets a different template format, e.g.
:json.
Example:
class MusicianCell < ::Cell::Base
def sing
# ... laalaa
render
end
renders the view musician/sing.html.
def sing
# ... laalaa
render :view => :shout, :layout => 'metal'
end
renders musician/shout.html and wrap it in app/cells/layouts/metal.html.erb.
#render is explicit!
You can also alter the markup from #render. Just remember to return it.
def sing
render + render + render
end
will render three concated views.
Partials?
In Cells we abandoned the term ‘partial’ in favor of plain ‘views’ - we don’t need to distinguish between both terms. A cell view is both, a view and a kind of partial as it represents only a fragment of the page.
Just use :view and enjoy.
Using states instead of helpers
Sometimes it’s useful to not only render a view but also invoke the associated state. This is especially helpful when replacing helpers. Do that with render :state.
def show_cheap_item(item)
render if item.price <= 1
end
A view could use this state in place of an odd helper.
- @items.each do |item|
= render({:state => :show_cheap_item}, item)
This calls the state method which in turn will render its view - if the item isn’t too expensive.
130 131 132 |
# File 'lib/cell/rails.rb', line 130 def render(*args) render_view_for(self.action_name, *args) end |