我的new
和edit
页面依赖于一个@important_data
未在create
和update
操作中使用的实例变量。
结果,我的new
页面在失败时无法呈现页面。
def create
@my_object = MyObject.new(params[:my_object])
if @my_object.save
redirect_to root_path
else
render action: "new"
#this can't render because the page asks for an @important_data variable that's not defined.
end
end
我应该选择以下两种解决方案中的哪一种?每个的优点/缺点是什么?
选项 1:在渲染之前声明 @important_data
def create
@my_object = MyObject.new(params[:my_object])
if @my_object.save
redirect_to root_path
else
@important_data = ImportantData.all
render action: "new"
end
end
选项 2:重定向
def create
@my_object = MyObject.new(params[:my_object])
if @my_object.save
redirect_to root_path
else
redirect_to new_my_object_path
end
end