我在Rails中有一个HTML表单。有时当用户提交数据时,我的服务器会拒绝它,因为数据不合适(例如,用户在一个应该只有数字的字段中键入一个非数字。)
<%= form_tag "myproject/win", :id => "win_form" do -%>
...
<label>
Year
<%= text_field_tag "year", '', :size => 20 %>
</label>
...
<%= submit_tag "Go!" %>
<% end -%>
在这种情况下,我的控制器会返回错误消息
@notice = "Year must be a number"
return render action: "new"
但是用户键入的所有数据都会消失,用户必须使用空白表单重新启动。有没有办法为用户保留这些数据?
答案 0 :(得分:2)
如果您没有数据存储,那就没关系,但您仍然可以利用ActiveModel创建一个可用于帮助构建表单的对象(或使用reform gem)。如果真的不希望这样做,尽管它提供了额外的功能,你可以使用现有的,但注意参数:< / p>
来自http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag:
text_field_tag(name, value = nil, options = {})
创建标准文本字段;使用这些文本字段输入较小的文本块,如用户名或搜索查询。
您的代码:
text_field_tag "year", '', :size => 20
因此,您传递''
作为值,并询问我们为什么值为''
。也许你真正想要的是:
text_field_tag "year", params[:year], :size => 20