Last Update: 2022-09-13 07:49:26 -0700

New Features

  • A link_to plugin has been added with a link_to method for creating HTML links.

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

    # Instance level
    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
    # Instance level
    link_to("body", A.new(1))
    # => "<a href=\"/path/to/a/1\">body</a>"

    To set additional HTML attributes on the 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>"

Other Improvements

  • Coverage testing has been expanded to multiple rack versions, instead of just the current rack release.