2011-06-29 98 views
2

如何在另一个页面上显示错误?如何在另一个页面上显示错误信息?

我的用户文件夹

下,并在另一个地方,my_account的文件夹形式,我呈现来自my_account的索引页面中的用户文件夹的形式。这样我可以重用表单,以允许用户更新他们的用户信息。

因此,当用户点击更新,在UserController的更新方法将被调用。

我的问题是,如果zhcon失败更新用户对象,我怎么能显示到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

您需要在用户对象上设置错误。这是用来通过表单辅助调用<%= f.error_messages%>你<%内的form_for%>块时显示错误消息。

Rails的最佳做法是调用渲染这里,不重定向,所以,我们必须确保我们通过有错误正确分配@user对象。

的动作来呈现,你可以简单地调用:

if [email protected] 
    render :action => '../my_account/index' 
end 

这应该轻松解决你的问题。只要确保您的所有@成员变量设置为index.html.erb视图所期望的。

+0

您好ghayes,我得到错误丢失模板../my_account/index {:handlers => [:erb,:rjs, :builder,:rhtml,:rxml],:formats => [:html],:locale => [:en,:en]}。我需要在路由配置中执行任何操作吗? – jojo

+0

将路径更改为“/ my_account/index”...并且它正在为我工​​作....很棒thx .. – jojo

1

我不知道这件事,但是可能会为你工作。

在当您遇到任何错误只是重定向到my_account的索引页,并把它传递错误的详细信息user_controller的更新方法进行索引页面上显示。即:

def update 
    @user = User.find(params[:id]) 
    ## update process and if fails 
    redirect_to :action=> 'index', :status=>:unprocessable_entity, :error=>@user.errors 
end 
+0

THX哈利......我会试试看...... – jojo

+0

hmm..it不'吨的工作...我怎样才能得到错误信息呢? – jojo

+0

你在网页上有错误吗? –

相关问题