Rails:恢复使用form_tag的非模型表单的内容

我的第一个Rails应用程序(使用Rails 3)取得了很好的进展。 MVC交互一切都很顺利,但是我对一个与模型没有直接关系的表单有困难。

我正在使用form_tag,并且在成功的情况下,一切都表现良好。 但是,处理错误有点不友好。 实际的错误消息存储在flash中并通过layouts / application.html正常显示,但如果表单能够记住用户刚刚填写的内容,我真的很喜欢它。但它不是:所有的字段重置为默认值。

我喜欢对对象的RESTful操作表单的方式自动记住他们提交的值,如果有错误则以红色突出显示。 没有红色突出显示我很好,但如果我能让表单的字段保持提交的值,我真的很喜欢它。

任何人都可以建议如何做到这一点?

摘录相关文件:

意见/ cardsets / import.html.erb:

 :import_data, :id => @cardset do %> ...  1 %> ...  ...etc (more fields) 

控制器/ cardsets_controller.rb:

 # POST /cardsets/1/import_data def import_data success, message = @cardset.import_data(params, current_user) if success redirect_to(@cardset, :notice => message) else flash.now[:error] = message render :import end end 

text_field_tag的第二个参数是用字段填充的值。 尝试这样的事情:

  <%= text_field_tag "separator", params[:separator], :maxlength => 1 %> 

如果您的字段有默认值,则需要从表单的“show”操作设置它:

 # GET def show_form params[:key] = 'default' end # POST def validate_form_and_act # Don't set it here to reuse what the user passed. end 

或直接在模板上(不太好,因为每次使用||并添加更多的控制器数据来查看):

  <%= text_field_tag 'name', params[:key] || 'default' %>