1

我在 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" 

但是用户输入的所有数据都消失了,用户必须以空白表单重新启动。有没有办法为用户保留这些数据?

4

1 回答 1

2

如果您没有数据存储,那很好,但您仍然可以利用 ActiveModel 创建一个可用于帮助构建表单的对象(或使用改革 gem)。如果你真的不想这样做,尽管它为你提供了额外的功能,你可以使用你现在拥有的东西,但要注意参数

来自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
于 2013-06-05T20:50:02.617 回答