URLGenerator
class Athena::Routing::URLGenerator
inherits Reference
Default implementation of ART::URLGeneratorInterface
.
Included modules
Athena::Routing::URLGeneratorInterface
Class methods
.new(routes : ART::RouteCollection, request : HTTP::Request, base_uri : URI?)
(routes : ART::RouteCollection, request : HTTP::Request, base_uri : URI?)
Methods
#generate(route : String, params : Hash(String, _)? = nil, reference_type : ART::URLGeneratorInterface::ReferenceType = :absolute_path) : String
(route : String, params : Hash(String, _)? = nil, reference_type : ART::URLGeneratorInterface::ReferenceType = :absolute_path) : String
Generates a URL to the provided route with the provided params.
By default the path is an ART::URLGeneratorInterface::ReferenceType::Absolute_Path
,
but can be changed via the reference_type argument.
Any params not related to an argument for the provided route will be added as query params.
require "athena"
class ExampleController < ART::Controller
@[ARTA::Get("/add/:value1/:value2", name: "add")]
def add(value1 : Int32, value2 : Int32, negative : Bool = false) : Int32
0
end
@[ARTA::Get("/")]
def get_link : String
""
end
end
generator.generate "add", value1: 10, value2: 5 # => /add/10/5
params are validated to ensure they are all provided, and meet any route constraints defined on the action.
OPTIMIZE: Make URL generation more robust.
ameba:disable Metrics/CyclomaticComplexity