Module: ActionController::UrlFor
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Included In:
| |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
::ActiveSupport::Concern
|
|
|
Instance Chain:
|
|
| Defined in: | actionpack/lib/action_controller/metal/url_for.rb |
Overview
Includes url_for into the host class. The class has to provide a RouteSet by implementing the _routes method. Otherwise, an exception will be raised.
In addition to ::AbstractController::UrlFor, this module accesses the HTTP layer to define URL options like the host. In order to do so, this module requires the host class to implement env which needs to be Rack-compatible, and request which returns an ::ActionDispatch::Request instance.
class RootUrl
include ActionController::UrlFor
include Rails.application.routes.url_helpers
delegate :env, :request, to: :controller
def initialize(controller)
@controller = controller
@url = root_path # named route from the application.
end
end
Class Method Summary
::ActiveSupport::Concern - Extended
| class_methods | Define class methods from given block. |
| included | Evaluate given block in context of base class, so that you can write class macros here. |
| prepended | Evaluate given block in context of base class, so that you can write class macros here. |
| append_features, prepend_features | |
Instance Attribute Summary
::AbstractController::UrlFor - Included
::ActionDispatch::Routing::UrlFor - Included
Instance Method Summary
::AbstractController::UrlFor - Included
::ActionDispatch::Routing::UrlFor - Included
| #initialize, | |
| #route_for | Allows calling direct or regular named route. |
| #url_for | Generate a URL based on the options provided, |
| #url_options | Hook overridden in controller to add request information with |
| #_routes_context, #_with_routes, #full_url_for | |
::ActionDispatch::Routing::PolymorphicRoutes - Included
| #polymorphic_path | Returns the path component of a URL for the given record. |
| #polymorphic_url | Constructs a call to a named RESTful route for the given record and returns the resulting URL string. |
| #polymorphic_mapping, #polymorphic_path_for_action, #polymorphic_url_for_action | |
Instance Method Details
#initialize
[ GitHub ]# File 'actionpack/lib/action_controller/metal/url_for.rb', line 32
def initialize(...) super @_url_options = nil end
#url_options
[ GitHub ]# File 'actionpack/lib/action_controller/metal/url_for.rb', line 37
def @_url_options ||= { host: request.host, port: request.optional_port, protocol: request.protocol, _recall: request.path_parameters }.merge!(super).freeze if (same_origin = _routes.equal?(request.routes)) || (script_name = request.engine_script_name(_routes)) || (original_script_name = request.original_script_name) = @_url_options.dup if original_script_name [:original_script_name] = original_script_name else if same_origin [:script_name] = request.script_name.empty? ? "" : request.script_name.dup else [:script_name] = script_name end end .freeze else @_url_options end end