是否可以刷新页面并闪烁通知以处理错误?我在我的";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
您可能还需要渲染某些内容。
或者,可以使用where
和first
而不是find
。这不会引发错误,然后检查是否有计划。
class CheckoutController < ApplicationController
def new
@plan = Plan.where(id: params[:plan]).first
if @plan
...
else
flash.notice = "Plan not found"
end
end
end