如果保存失败,我想重定向到上一个视图,但显示错误消息。
redirect_to user_path(@user_id), errors: @user.errors
但是在视图中,当我检查errors
时,我得到一个未定义的变量错误。
我没有使用相同的控制器new和create,所以我在new.html.erb中没有@ user.errors.any。我有两个不同的控制器,一个在哪里有形式,另一个控制器将负责创建,如果没有发生创建,我需要重定向到前一个控制器。
答案 0 :(得分:1)
您可能需要使用render代替redirect_to
。
像这样:
# controller_1
def step_1
@user = User.new
@user.do_something
...
end
# controller_2
def step_2
if @user.save?
# redirect to another...
else
render 'controller_1/step_1`
end
end
然后在查看step_1.html.erb
上,您可以使用@user
打印@user.errors
的错误。
答案 1 :(得分:0)
您必须检查params[:errors]
而不是errors
答案 2 :(得分:0)
你必须在redirect_to帮助器中传递参数,如下所示,
redirect_to user_path(id: @user_id, error: @user.errors.messages)
请检查佣金路线并传递相应的密钥,无论是:id,还是:user_id