我知道这是一项艰巨的任务,但是当用户导航到不同的页面而没有提交时,是否有任何保存表单输入的好方法,所以当他们回来时他们不必重新输入信息?
我正在使用Rails 4,Simple Form和jQuery,但我对任何不是丑陋黑客的解决方案持开放态度。
答案 0 :(得分:6)
jQuery序列化功能可能是你的朋友。 您可以在出路时序列化并将其保存到DB或localStorage,然后在它们返回页面时执行相反的操作。
http://api.jquery.com/serialize/
或者,您可以循环遍历元素并将它们存储在数组/对象中,然后您也可以将其存储在localStorage中,并在重新输入时相应地重新填充表单的值。
答案 1 :(得分:3)
这些都是很棒的想法,但我刚刚为我找到了完美的解决方案:Garlic.js。
对于将来遇到类似问题的任何人,您只需要包含该库并将以下内容添加到您的表单标记中即可:
data-persist="garlic"
图书馆几乎可以完全按照您的预期处理其他所有内容。如果你不喜欢它的一些预设,它似乎有很好的记录,几乎每个功能似乎都是可以禁用的。
一个问题是它只是一个HTML5解决方案,但这对我的目的来说很好。如果你需要更多交叉兼容的东西,Rob的解决方案看起来不错。
答案 2 :(得分:1)
如果您不想要任何外部依赖项,您只需创建一个实际提交表单的后退按钮(或其他任何页面)。然后根据if
的值添加params[:submit]
语句,并使用params
哈希填充新页面上的一些隐藏字段。
当您单击回原始表单时,隐藏的字段将被提交并填充输入。