почему devise генерирует этот формат URL подтверждения? - PullRequest
0 голосов
/ 05 декабря 2018

devise продолжать генерировать этот формат 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 Ответ

0 голосов
/ 12 декабря 2018

In Devise gem, маршруты для подтверждения создаются, как показано ниже,

#  # 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)`

Также проверьте rout.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
...