# module Devise::Controllers::UrlHelpers

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

### Public Class Methods

generate_helpers!(routes=nil) click to toggle source

    # 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}"

                  class_eval "                def #{method}(resource_or_scope, *args)
                      scope = Devise::Mapping.find_scope!(resource_or_scope)
                      _devise_route_context.send("#{action}\#{scope}_#{module_name}_#{path_or_url}", *args)
                    end
    ", __FILE__, __LINE__ + 1
                end
              end
            end
          end

remove_helpers!() click to toggle source

    # File lib/devise/controllers/url_helpers.rb, line 29
    def self.remove_helpers!
      self.instance_methods.map(&:to_s).grep(%r_(url|path)$/).each do |method|
        remove_method method
      end
    end