私はDevise Invitableを使用しています.SOでいくつかの回答を見つけました(ここに1つがあります).after_invite_path_for(resource)
Users::InvitationsController < DeviseController
私はそれを試しましたが、まだうまくいきません。
これは私のコントローラーです:
class Users::InvitationsController < Devise::InvitationsController
def after_invite_path_for(resource)
root_path
end
def create
@member ||= Member.find_or_create_by(email: params[:user][:email], first_name: get_first_name(params[:user][:full_name]), last_name: get_last_name(params[:user][:full_name]), bio: params[:user][:bio], gender: params[:user][:gender])
@membership ||= Membership.find_or_create_by(member: @member, family_tree: current_user.family_tree, inviter: current_user, relation: params[:user][:invitation_relation])
if @user_exists ||= invited_user_exists(params[:email])
else
super
end
end
end
ブロック内の のredirect_to root_path
直後に追加しようとすると、リダイレクトが既に呼び出されているというエラーがスローされます。super
else
ここで作成アクションのソースを確認すると、リダイレクトが表示されるため、それは本当だと思います。
これはサーバーログです:
Started POST "/users/invitation" for 127.0.0.1 at 2015-12-02 03:58:57 -0500
Processing by Users::InvitationsController#create as HTML
Rendered users/mailer/invitation_instructions.html.erb within layouts/mail (1.2ms)
# truncated for brevity
Rendered users/invitations/create.html.erb within layouts/devise (0.6ms)
Rendered shared/_navbar.html.erb (1424.4ms)
Completed 200 OK in 9221ms (Views: 4732.1ms | ActiveRecord: 102.0ms)
どこにもリダイレクトしないことに注意してください。