如何在其他页面上显示错误信息?

时间:2011-06-29 14:23:32

标签: ruby-on-rails-3

如何在其他页面上显示错误?

我在用户文件夹下有一个表单

在另一个地方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 }

2 个答案:

答案 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设置为。