我的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
< - 新动作
任何帮助表示赞赏!
答案 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 %>