module Roda::RodaPlugins::ContentFor

  1. lib/roda/plugins/content_for.rb

The content_for plugin is designed to be used with the render plugin, allowing you to store content inside one template, and retrieve that content inside a separate template. Most commonly, this is so view templates can set content for the layout template to display outside of the normal content pane.

In the template in which you want to store content, call content_for with a block:

<% content_for :foo do %>
  Some content here.
<% end %>

You can also set the raw content as the second argument, instead of passing a block:

<% content_for :foo, "Some content" %>

In the template in which you want to retrieve content, call content_for without the block:

<%= content_for :foo %>

If content_for is used multiple times with the same key, by default, the last call will append previous calls. If you want to overwrite the previous content, pass the append: false option when loading the plugin:

plugin :content_for, append: false


Public Class

  1. configure
  2. load_dependencies

Public Class methods

configure (app, opts = OPTS)

Configure whether to append or overwrite if content_for is called multiple times to set data. Overwrite is default, use the :append option to append.

[show source]
# File lib/roda/plugins/content_for.rb, line 45
def self.configure(app, opts = OPTS)
  app.opts[:append_content_for] = opts.fetch(:append, true)
load_dependencies (app, _opts = OPTS)

Depend on the render plugin, since this plugin only makes sense when the render plugin is used.

[show source]
# File lib/roda/plugins/content_for.rb, line 38
def self.load_dependencies(app, _opts = OPTS)
  app.plugin :render