2016-07-07 2 views
0

Devise отправляет почтовую инструкцию для подтверждения учетной записи. Когда пользователь нажимает на ссылку подтверждения, их учетная запись активируется, и пользователь перенаправляется на страницу static_pages#home, но мне нужно, чтобы эта ссылка перенаправлялась на другую страницу.Как изменить confirm_url в Rails

URL

подтверждения:

<p><%= link_to 'Подтвердить мой аккаунт', confirmation_url(@resource, confirmation_token: @token) %></p> 

confirmation_controller:

class Users::ConfirmationsController < Devise::ConfirmationsController 
    # GET /resource/confirmation/new 
    def new 
    super 
    end 

    # POST /resource/confirmation 
    def create 
    super 
    end 

    # GET /resource/confirmation?confirmation_token=abcdef 
    def show 
    super 
    end 

    protected 

    # The path used after resending confirmation instructions. 
    def after_resending_confirmation_instructions_path_for(resource_name) 
    super(resource_name) 
    end 

    # The path used after confirmation. 
    def after_confirmation_path_for(resource_name, resource) 
    new_profiles_path (resource_name, resource) 
    end 

end 

Новая ошибка в браузере:

/дома/влад/Desktop/MyApp/приложение/контроллеры/пользователей/confirmations_controller .rb: 26: синтаксическая ошибка, неожиданный ',', expecting ')' new_profiles_path (resource_name, ресурс)^

ответ

0

Вам не нужно менять confirmation_url вместо этого вам необходимо переопределить after_confirmation_path_for

Для этого необходимо определить after_confirmation_path_for в ConfirmationsController

Чтобы сделать это создать confirmations_controller.rb в app/controllers Справочник:

class ConfirmationsController  < Devise::ConfirmationsController 

    private 

    def  after_confirmation_path_for(resource_name, resource) 
     your_new_after_confirmation_path 
    end 

end 

В config/routes.rb, добавьте эту строку s o что Devise будет использовать ваш пользовательский ConfirmationsController.

devise_for :users, controllers: { confirmations: 'confirmations' } 

Перезагрузите веб-сервер, и вы должны иметь его.

Пожалуйста, обратитесь Devise Wiki для более вариантов/подробностей

обновленных

Вот confirmations_controller.rb

class Users::ConfirmationsController < Devise::ConfirmationsController 
# GET /resource/confirmation/new 
def new 
super 
end 
# POST /resource/confirmation 
def create 
    super 
end 

# GET /resource/confirmation?confirmation_token=abcdef 
def show 
super 
end 

protected # The path used after resending confirmation instructions. 
def after_resending_confirmation_instructions_path_for(resource_name) 
super(resource_name) 
end 

# The path used after confirmation. 
def after_confirmation_path_for(resource_name, resource) 
new_profiles_path(resource_name, resource) 
end 
end 
+0

после инструкции новой ошибки -/главного/Влада/Desktop/MyApp/приложение/контроллеры /users/confirmations_controller.rb:26: синтаксическая ошибка, неожиданное ',', expecting ')' new_profiles_path (resource_name, resource)^ –

+0

Это мой код: protected def after_co nfirmation_path_for (resource_name, resource) new_profiles_path (resource_name, resource) end –

+0

Похоже, вы ввели синтаксическую ошибку. Вставьте свой фрагмент кода для 'confirmations_controller.rb' в свой вопрос. В комментарии его не то, что читается –

Смежные вопросы