0

注:いつものように、私はここで質問するためにそれを明確にする過程で私の問題を解決しました! 解決策は終わりです。

Rails がデバイス招待 URL リクエストを適切な場所に送信していません。

私が行くとき:

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

ブラウザはルートにリダイレクトするだけです。

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

では、なぜルートにリダイレクトされるのでしょうか。

カスタム編集メソッドに解決するようにしましたが、招待コントローラーを削除し、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 がルートにリダイレクトしてしまうことでした!

ログアウトして再度 URL を試してみたところ、うまくいきました。

4

1 に答える 1

1

問題は、私がすでに他のアカウントを使用して自分のサイトにサインインしていたため、devise_invitable の招待を受け入れようとすると、devise がルートにリダイレクトしてしまうことでした!

ログアウトして再度 URL を試してみたところ、うまくいきました。

于 2016-01-28T05:58:19.567 に答える