在Rails表单验证中重新填充表单字段

时间:2012-01-26 09:40:05

标签: ruby-on-rails ruby ruby-on-rails-3

我的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 个答案:

答案 0 :(得分:3)

是的,这是在客户端和服务器端进行验证的推荐方法。

关于保留字段涉及重定向@变量使用被销毁只有闪存持续最多一次重定向。

要么你可以在flash中传递你的验证信息,这是好的方式来渲染表单页面(很好地将表单作为单独的部分),@对象将自动映射相关字段,如名称,电子邮件

希望这会对你有所帮助。

感谢

答案 1 :(得分:1)

在表单中添加:<%= f.error_messages%>并且不要重定向,因为您将丢失发布的数据。

您可以在行动中执行以下操作:

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

答案 2 :(得分:0)

事实证明,闪存可以做我想要的,但我错误地使用它。 我不得不使用: flash[:name] = "name" 在重定向之前而不是redirect_to :back, :name => "name"

并在html中 <% if flash[:name] %>代替<% if params[:name] %><% name %>