gpt4 book ai didi

ruby-on-rails - Rails 回调检查记录是否存在,否则返回 404

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:14 24 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中通过自己的预订页面接受客户的预订。这些独特的 url 将全部面向公众(无身份验证)并由用户发送给潜在客户(这是我的客户请求该功能的方式)。当我在浏览器中输入现有用户的预订 URL(例如 https://localhost:3000/users/1/appointments/new)时,该页面运行良好。当我输入不存在的用户的 URL(例如 https://localhost:3000/users/5999/appointments/new)时,我收到以下错误:

ActiveRecord::RecordNotFound in BookingsController#booking_page 
Couldn't find User with 'id'=100

我想重定向到 404 页面而不是这个错误。这是我的 Controller (未使用 redirect_to_not_found,我在 before_action 中对此进行了测试):

class BookingsController < ApplicationController
before_action :authenticate_user!, except: :booking_page
before_action :set_user, only: :booking_page
layout 'public', only: :booking_page
def booking_page
respond_to do |format|
if @user
format.html { render :booking_page }
format.json { render json: @user, status: :ok }
else
format.html { render(:file => Rails.root.join('public', '404'), :formats => [:html], :status => 404, :layout => false) }
format.json { render json: 'Not Fount', status: :not_found }
end
end
end

private
def redirect_to_not_found
respond_to do |format|
if @user == nil
format.html { render(:file => Rails.root.join('public', '404'), :formats => [:html], :status => 404, :layout => false) }
format.json { render json: 'Not Fount', status: :not_found }
end
end
end

# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def bookings_params
params.require(:user_booking).permit(:client_firstname, :client_surname, :client_email, :client_mobile_namber, :services_required, :notes, :date, :start_time, :end_time, :location, :cost, :payment_completed)
end
end

有什么方法可以在运行 booking_page 操作方法之前分配设置 @user 变量/对象并同时检查用户是否存在于数据库中?

我尝试使用来自 here 的公认答案但我仍然遇到同样的错误。

最佳答案

您可以将其添加到您的 Controller 中以从该错误/异常中解救出来。您可以将它放在您的 ApplicationController 中以获得整个应用程序的效果或放在特定的 Controller 中。

rescue_from ActiveRecord::RecordNotFound do |exception|
logger.error "Not found ..."
redirect_to 404_path # You will have to configure this yourself in routes.rb
# ... OR use your method
redirect_to_not_found
end

关于ruby-on-rails - Rails 回调检查记录是否存在,否则返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57093605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com