2012-01-26 119 views
0

我在我的Rails應用程序中有一個簡單的用戶註冊頁面,該頁面有兩個字段:名稱和電子郵件。我有提交按鈕的每個文本字段和服務器端的客戶端驗證(這是推薦的方式吧?)重新填充Rails表單驗證中的表單字段

我的問題是,我不知道如何重新填充兩個字段與以前的值,如果他們提交了一個錯誤。我已經嘗試了幾天,如:

format.html { redirect_to :back, :notice => 'Uh Oh! Something went wrong!', :name => @user.name } < - 創建行動 和

if(params.has_key?(:name)) @user.name = params[:name] end < - 新動作

任何幫助表示讚賞!

回答

3

是的,這是在客戶端和服務器端進行驗證的推薦方式。

關於保留字段是關於重定向的@變量使用被破壞只有閃光堅持一個重定向。

要麼你可以在Flash中傳遞你的驗證信息,這是壞的方式,好的方法是呈現表單頁面(好的是將表單作爲單獨的部分),@對象將自動映射相關的字段,如名稱,電子郵件。

希望這會幫助你。

感謝

+0

+1這個真棒答案。 –

1

在你的窗體添加這樣的:<%= f.error_messages%>不重定向,因爲你將失去發佈的數據。

你可以做這樣的事情在你的行動:

if @posted_object.save 
    redirect_to ... 
else 
    render 'your view' 
end 
+0

那麼我如何將@posted_object傳遞給新頁面? – Gabe

0

事實證明,閃光燈可以做什麼,我想,但我用它不正確。 我不得不使用: flash[:name] = "name" 重定向,而不是redirect_to :back, :name => "name"

前和HTML <% if flash[:name] %>,而不是<% if params[:name] %><% name %>