Class: Decidim::EngineRouter
- Inherits:
-
Object
- Object
- Decidim::EngineRouter
- Defined in:
- lib/decidim/engine_router.rb
Overview
This class is responsible for sending route helper methods to the correct mounted engine. To do that, it needs to know the name of the mounted helper for the engine, and the contextual parameters to identify the mount point for it, which are added to the parameters passed to the route helper.
Class Method Summary collapse
-
.admin_proxy(target) ⇒ EngineRouter
Instantiates a router to the backend engine for an object.
-
.main_proxy(target) ⇒ EngineRouter
Instantiates a router to the frontend engine for an object.
Instance Method Summary collapse
- #default_url_options ⇒ Object
-
#initialize(engine, default_url_options, target = nil, options = {}) ⇒ EngineRouter
constructor
A new instance of EngineRouter.
- #method_missing(method_name) ⇒ Object
- #respond_to_missing?(method_name, include_private = false) ⇒ Boolean
Constructor Details
#initialize(engine, default_url_options, target = nil, options = {}) ⇒ EngineRouter
Returns a new instance of EngineRouter.
31 32 33 34 35 36 |
# File 'lib/decidim/engine_router.rb', line 31 def initialize(engine, , target = nil, = {}) @engine = engine @default_url_options = @target = target @admin = .fetch(:admin, false) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/decidim/engine_router.rb', line 46 def method_missing(method_name, *) return super unless route_helper?(method_name) filter_slug_params!(method_name) result = send(engine).send(method_name, *) admin? ? rewrite_locale_in_admin_path(result, method_name) : result end |
Class Method Details
.admin_proxy(target) ⇒ EngineRouter
Instantiates a router to the backend engine for an object.
27 28 29 |
# File 'lib/decidim/engine_router.rb', line 27 def self.admin_proxy(target) new(target.mounted_admin_engine, target.mounted_params.except(:locale), target, admin: true) end |
.main_proxy(target) ⇒ EngineRouter
Instantiates a router to the frontend engine for an object.
18 19 20 |
# File 'lib/decidim/engine_router.rb', line 18 def self.main_proxy(target) new(target.mounted_engine, target.mounted_params, target) end |
Instance Method Details
#default_url_options ⇒ Object
38 39 40 |
# File 'lib/decidim/engine_router.rb', line 38 def @default_url_options.reverse_merge() end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
42 43 44 |
# File 'lib/decidim/engine_router.rb', line 42 def respond_to_missing?(method_name, include_private = false) route_helper?(method_name) || super end |