Module: Devise::Controllers::UrlHelpers
- Defined in:
- lib/devise/controllers/url_helpers.rb
Overview
Create url helpers to be used with resource/scope configuration. Acts as proxies to the generated routes created by devise. Resource param can be a string or symbol, a class, or an instance object. Example using a :user resource:
new_session_path(:user) => new_user_session_path
session_path(:user) => user_session_path
destroy_session_path(:user) => destroy_user_session_path
new_password_path(:user) => new_user_password_path
password_path(:user) => user_password_path
edit_password_path(:user) => edit_user_password_path
new_confirmation_path(:user) => new_user_confirmation_path
confirmation_path(:user) => user_confirmation_path
Those helpers are included by default to ActionController::Base.
In case you want to add such helpers to another class, you can do that as long as this new class includes both url_helpers and mounted_helpers. Example:
include Rails.application.routes.url_helpers
include Rails.application.routes.mounted_helpers
Class Method Summary collapse
Class Method Details
.generate_helpers!(routes = nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/devise/controllers/url_helpers.rb', line 35 def self.generate_helpers!(routes=nil) routes ||= begin mappings = Devise.mappings.values.map(&:used_helpers).flatten.uniq Devise::URL_HELPERS.slice(*mappings) end routes.each do |module_name, actions| [:path, :url].each do |path_or_url| actions.each do |action| action = action ? "#{action}_" : "" method = :"#{action}#{module_name}_#{path_or_url}" define_method method do |resource_or_scope, *args| scope = Devise::Mapping.find_scope!(resource_or_scope) router_name = Devise.mappings[scope].router_name context = router_name ? send(router_name) : _devise_route_context context.send("#{action}#{scope}_#{module_name}_#{path_or_url}", *args) end end end end end |
.remove_helpers! ⇒ Object
29 30 31 32 33 |
# File 'lib/devise/controllers/url_helpers.rb', line 29 def self.remove_helpers! self.instance_methods.map(&:to_s).grep(/_(url|path)$/).each do |method| remove_method method end end |