当我得到ActiveRecord::RecordNotFound时,闪烁一个通知而不是错误



是否可以刷新页面并闪烁通知以处理错误?我在我的";choose_plan#new";如果用户按下";checkout#new";按钮,而不选择计划。如果他们选择了一个计划,我宁愿展示一个细节,而不是只让我的按钮工作。

错误:

ActiveRecord::RecordNotFound (Couldn't find Plan without an ID):

我的代码:

class ChoosePlanController < ApplicationController
def new
@plans = Plan.all
class CheckoutController < ApplicationController
def new
@plan = Plan.find(params[:plan])

我使用的是rails 7.0.1和ruby 3.1.2

您可以使用find_by,它不会引发错误,如果找不到任何内容,则会返回nil

def new
if params[:plan].blank?
redirect_to new_choose_plan_path, notice: "Please, select a plan."
return
end
@plan = Plan.find_by(id: params[:plan])
unless @plan
redirect_to new_choose_plan_path, notice: "No plan found."
return
end
# ...
end

rescue错误和flash通知。

class CheckoutController < ApplicationController
def new
begin
@plan = Plan.find(params[:plan])
rescue ActiveRecord::RecordNotFound => e
flash.notice = e
end
...
end
end

您可能还需要渲染某些内容。

或者,可以使用wherefirst而不是find。这不会引发错误,然后检查是否有计划。

class CheckoutController < ApplicationController
def new
@plan = Plan.where(id: params[:plan]).first
if @plan
...
else
flash.notice = "Plan not found"
end
end
end

相关内容

  • 没有找到相关文章

最新更新