2012-01-26 78 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 %>