注意:像往常一样,我在澄清它的过程中解决了我的问题,在这里问它!解决方案结束。
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,它工作正常!