Module: Roda::RodaPlugins::LinkTo

Defined in:
lib/roda/plugins/link_to.rb

Overview

The link_to plugin adds the link_to instance method, which can be used for constructing HTML links (a tag with href attribute).

The simplest usage of link_to is passing the body and the location to link to as strings:

link_to("body", "/path")
# => "<a href=\"/path\">body</a>"

The link_to plugin depends on the path plugin, and allows you to pass symbols for named paths:

# Class level
path :foo, "/path/to/too"

# Instance level
link_to("body", :foo)
# => "<a href=\"/path/to/foo\">body</a>"

It also allows you to pass instances of classes that you have registered with the path plugin:

# Class level
A = Struct.new(:id)
path A do
  "/path/to/a/#{id}"
end

# Instance level
link_to("body", A.new(1))
# => "<a href=\"/path/to/a/1\">body</a>"

To set additional HTML attributes on the a tag, you can pass them as an options hash:

link_to("body", "/path", foo: "bar")
# => "<a href=\"/path\" foo=\"bar\">body</a>"

If the body is nil, it will be set to the same as the path:

link_to(nil, "/path")
# => "<a href=\"/path\">/path</a>"

The plugin will automatically HTML escape the path and any HTML attribute values, using the h plugin:

link_to("body", "/path?a=1&b=2", foo: '"bar"')
# => "<a href=\"/path?a=1&amp;b=2\" foo=\"&quot;bar&quot;\">body</a>"

Defined Under Namespace

Modules: InstanceMethods

Class Method Summary collapse

Class Method Details

.load_dependencies(app) ⇒ Object



50
51
52
53
# File 'lib/roda/plugins/link_to.rb', line 50

def self.load_dependencies(app)
  app.plugin :h
  app.plugin :path
end