Почему devise генерирует этот формат URL подтверждения?
Разработать продолжать генерировать этот формат confirmation URL
http://something.com/users/confirmation/divyanshu-rawat?confirmation_token=CV3zV1wAWsb3RokHHEKN
Я не знаю, почему это не генерирует что-то подобное.
http://something.com/users/confirmation?confirmation_token=CV3zV1wAWsb3RokHHEKN
Вот так мой confirmation_instructions.html.haml
похоже.
%p Welcome #{@resource.first_name}!
%p You can confirm your account email through the link below:
%p= link_to 'Confirm my account', user_confirmation_url(@resource, :confirmation_token => @resource.confirmation_token)
1 ответ
Решение
В геме Devise маршруты для подтверждения создаются, как показано ниже:
# # Confirmation routes for Confirmable, if User model has :confirmable configured
# new_user_confirmation GET /users/confirmation/new(.:format) {controller:"devise/confirmations", action:"new"}
# user_confirmation GET /users/confirmation(.:format) {controller:"devise/confirmations", action:"show"}
# POST /users/confirmation(.:format) {controller:"devise/confirmations", action:"create"}
Так что если вы хотите создать как URL,
http://something.com/users/confirmation?confirmation_token=CV3zV1wAWsb3RokHHEKN
использование
user_confirmation_url(confirmation_token: @resource.confirmation_token)`
Вместо
user_confirmation_url(@resource, confirmation_token: @resource.confirmation_token)`
Также проверьте маршруты.rb
Если вы хотите передать атрибут user_name или name db из @resource
в URL подтверждения (как вы просили, передавая divyanshu-rawat в своем URL), вы можете создать собственный маршрут, который будет указывать на тот же контроллер и действие, как показано ниже,
# config/routes.rb
devise_for :users
as :user do
get '/users/confirmation/:name' => "devise/confirmations#show", as: 'user_confirm'
end
И если в вашем случае, @resource.user_name = 'divyanshu-rawat', обновите confirmation_instructions.html.haml
как показано ниже,
%p Welcome #{@resource.first_name}!
%p You can confirm your account email through the link below:
%p= link_to 'Confirm my account', user_confirm_url(name: @resource.user_name, confirmation_token: @resource.confirmation_token)
Который будет производить URL, как,
http://something.com/users/confirmation/divyanshu-rawat?confirmation_token=CV3zV1wAWsb3RokHHEKN