【问题标题】:Devise invitable sending user to root route instead of invitation page设计邀请发送用户到根路由而不是邀请页面
【发布时间】:2018-08-27 03:16:53
【问题描述】:

我想在我的应用程序中实现 Devise Invitable,但是,它没有按预期工作。现在电子邮件发送正确,但是当用户单击accept invitation 链接时,他们不会被发送到可以设置密码的页面,而是被发送到网站的根路由。更奇怪的是,当我检查accept invite 链接时,超引用设置为 http://localhost:3000/users/invitation/accept?invitation_token=aQ9_9eubcMHv-hXuUM3T"

这是应该设置的!但它不会把我送到那里。似乎一旦用户确实到达页面,Devise Invitable 会自动将用户重定向到主页,而不是呈现允许用户设置密码的表单,我不知道为什么

这是我的邀请控制器

class Users::InvitationsController < Devise::InvitationsController 
  before_action :configure_permitted_parameters

  protected 
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:accept_invitation, keys: [:first_name, :last_name])
  end
end

这是我的路线

Rails.application.routes.draw do

  devise_for :users, controllers: { invitations: 'users/invitations' }
  root 'pages#home'

  get '/dashboard', to: 'dashboard#index'
  namespace :dashboard do
    resources :projects do 
      post :toggle_status
    end
    resources :users, except: [:edit, :update]
  end
end

点击接受链接后,我的日志报告如下:

Started GET "/users/invitation/accept?invitation_token=nXxxSxP8vC3yUogm9yzx" for 127.0.0.1 at 2018-08-26 21:33:37 -0600
Processing by Users::InvitationsController#edit as HTML
  Parameters: {"invitation_token"=>"nXxxSxP8vC3yUogm9yzx"}
  User Load (0.8ms)  SELECT  "users".* FROM "users" WHERE "users"."invitation_token" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["invitation_token", "a807392954389f3dd2054bfe03567b5419d6da7212f1c490ee2b46a9641037a6"], ["LIMIT", 1]]
  ↳ /Users/angelgarcia/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
  User Load (0.8ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 20], ["LIMIT", 1]]
  ↳ /Users/angelgarcia/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 9ms (ActiveRecord: 1.6ms)


Started GET "/" for 127.0.0.1 at 2018-08-26 21:33:37 -0600
Processing by PagesController#home as HTML
  Rendering pages/home.html.erb within layouts/application
  Rendered pages/home.html.erb within layouts/application (0.8ms)
Completed 200 OK in 83ms (Views: 76.7ms | ActiveRecord: 0.0ms)

这是我的设计路线

cancel_user_registration GET    /users/cancel(.:format)                                                                  devise_invitable/registrations#cancel
          new_user_registration GET    /users/sign_up(.:format)                                                                 devise_invitable/registrations#new
         edit_user_registration GET    /users/edit(.:format)                                                                    devise_invitable/registrations#edit
              user_registration PATCH  /users(.:format)                                                                         devise_invitable/registrations#update
                                PUT    /users(.:format)                                                                         devise_invitable/registrations#update
                                DELETE /users(.:format)                                                                         devise_invitable/registrations#destroy
                                POST   /users(.:format)                                                                         devise_invitable/registrations#create
         accept_user_invitation GET    /users/invitation/accept(.:format)                                                       users/invitations#edit
         remove_user_invitation GET    /users/invitation/remove(.:format)                                                       users/invitations#destroy
            new_user_invitation GET    /users/invitation/new(.:format)                                                          users/invitations#new
                user_invitation PATCH  /users/invitation(.:format)                                                              users/invitations#update
                                PUT    /users/invitation(.:format)                                                              users/invitations#update
                                POST   /users/invitation(.:format)                                                              users/invitations#create

【问题讨论】:

  • 在日志中,当您单击链接时,会触发controlleraction 哪个?另外,您是否收到任何警告/错误?哪个操作将处理accept 请求?
  • 你在哪里定义了after_invite_path_for
  • 您可以使用edit 操作更新您的 OP 吗?
  • 你有没有使用这个生成viewsrails generate devise_invitable:views
  • 当您单击电子邮件中的链接时,您是 signed inanother account 吗?

标签: ruby-on-rails devise devise-invitable


【解决方案1】:

使用 after_invite_path_for 方法覆盖默认路径

class InvitationsController < Devise::InvitationsController

  def after_invite_path_for(resource)
   #your_path
   new_admin_user_invitation_url
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多