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' %>