如何在其他页面上显示错误?
我在用户文件夹下有一个表单
在另一个地方my_account文件夹中,我在my_account的索引页面内的用户文件夹中呈现表单。这样我就可以重复使用表单,以允许用户更新他们的用户信息。
因此,当用户点击更新时,将调用UserController中的更新方法。
我的问题是,如果faild更新用户对象,我如何在my_account索引页面上显示错误消息,并且仍然有字段突出显示,并且错误消息?? 例如无效的电子邮件地址格式
User
-- new.html.erb
-- _form
my_account
-- index.html.erb
我尝试执行以下操作,但不确定如何在my_account页面中打印“错误”:
// try to update user information
// if failed, redirect to my account page
format.html { redirect_to my_account_path, :error => @user.errors }
答案 0 :(得分:1)
我不确定,但可能适合你。
在user_controller的update方法中,当你收到任何错误时,只需重定向到my_account的索引页面,并传递错误详细信息,以便在索引页面上显示。即:
def update
@user = User.find(params[:id])
## update process and if fails
redirect_to :action=> 'index', :status=>:unprocessable_entity, :error=>@user.errors
end
答案 1 :(得分:0)
您需要在用户对象上设置错误。表单助手在调用<%= f.error_messages%>时显示错误消息。在你的<%form_for%>里面块。
Rails最佳做法是在此处调用呈现,而不是重定向,以便我们确保传递错误的@user对象适当分配。
要渲染动作,您只需致电:
if !@user.save
render :action => '../my_account/index'
end
这很容易解决你的问题;只需确保将 index.html.erb 视图所需的所有@ member-variables设置为。