0

注意:像往常一样,我在澄清它的过程中解决了我的问题,在这里问它!解决方案结束。

Rails 没有将设计邀请 URL 请求发送到正确的位置。

当我去:

http://localhost:3000/users/invitation/accept?invitation_token=SOME_TOKEN

浏览器只是重定向到root。

routes.rb 正在向我的自定义设计控制器发送请求,例如:

devise_for :users, :controllers => { passwords: 'passwords', sessions: "sessions", invitations: 'users/invitations'}

devise.rb 已启用范围视图:

config.scoped_views = true

耙路线给了我:

accept_user_invitation GET /users/invitation/accept(.:format)  users/invitations#edit

和 users/invitations_controller.rb 就像:

class Users::InvitationsController < Devise::InvitationsController
  def edit
    # Try to catch rails if it resolves to this method like i want it to!
    # It fails to get here, though.
    byebug # elsewhere in my code, byebug successfully acts as breakpoint
    super
  end
end

那么为什么它会重定向到root?

我已经让它解决了我的自定义编辑方法,但只能通过从中删除邀请控制器devise_for并重命名它(作为“接受”)并明确地将其设为路由:

devise_scope :user do
  scope'/users' do
    get '/invitation/accept' => 'users/invitations#accept', as: 'custom_accept_user_invitation'
  end
end

如果这是一个缓存问题,我已经清除了我的 Chrome DNS 缓存,重新启动了 rails 服务器和 redis-server,然后运行 ​​rake tmp:cache:clear。

更新:解决方案

问题是我已经使用其他帐户登录到我的网站,所以当我尝试接受 devise_invitable 邀请时,devise 会将我重定向到 root!

我注销并再次尝试了 URL,它工作正常!

4

1 回答 1

1

问题是我已经使用其他帐户登录到我的网站,所以当我尝试接受 devise_invitable 邀请时,devise 会将我重定向到 root!

我注销并再次尝试了 URL,它工作正常!

于 2016-01-28T05:58:19.567 回答