ユーザーのサインアップ/インにdeviseを使用しています。ただし、ユーザーが公開されているアクセス可能なページからサインインすると、root_path へのリダイレクトを考案します。
私はこれを使用しようとしました:
def after_sign_in_path_for(resource)
request.referrer
end
ユーザーがサインインしようとすると、「適切にリダイレクトされていません」というエラーが表示されます。
誰でもそれを行う方法を教えてもらえますか?
ユーザーのサインアップ/インにdeviseを使用しています。ただし、ユーザーが公開されているアクセス可能なページからサインインすると、root_path へのリダイレクトを考案します。
私はこれを使用しようとしました:
def after_sign_in_path_for(resource)
request.referrer
end
ユーザーがサインインしようとすると、「適切にリダイレクトされていません」というエラーが表示されます。
誰でもそれを行う方法を教えてもらえますか?
私が正しければ、あなたがやりたいことは、ユーザーがサインインするときにリダイレクトをオーバーライドすることだと思います。デバイスコントローラーを生成しcontrollers/devise/sessions_controller.rb
ていない場合は、デバイスコントローラーを生成します。それができたら、あなたはあなたの中に次のようなものを持ちたいと思うでしょうdevise/sessions_controller.rb
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
# respond_with resource, :location => after_sign_in_path_for(resource)
if current_user.role? :administrator
redirect_to dashboard_path
else
redirect_to rota_days_path
end
end
sessions_controller - create
上記の例では、メソッドは デフォルトで次のものを使用しています。# respond_with resource, :location => after_sign_in_path_for(resource)
これはコメントアウトしています。current_users ロールが管理者であるかどうかを確認する if ステートメントを追加する。その場合、ダッシュボード ページにリダイレクトされます。そうでない場合は、勤務表ページにリダイレクトされます。
あるいは、devise ヘルパーは、次のようなこともできると述べています。
def after_sign_in_path_for(resource)
stored_location_for(resource) ||
if resource.is_a?(User) && resource.can_publish?
publisher_url
else
super
end
end
お役に立てれば。
アップデート
def create
@hospital_booking = HospitalBooking.new(params[:hospital_booking])
respond_to do |format|
if @hospital_booking.save
format.html { redirect_to :back, notice: 'Photographer Shift was successfully created.' }
format.json { render json: @hospital_booking, status: :created, location: @hospital_booking }
else
format.html { render action: 'new' }
format.json { render json: @hospital_booking.errors, status: :unprocessable_entity }
end
end
end
ここで何が起こるかというと、hospital_booking
保存すると、別のページにリダイレクトするのではなく、問題のページにリダイレクトされます。ここでさらに読む:api Dock-redirect_to