2011-06-29 121 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

你在網頁上有錯誤嗎? –

相關問題