Rails:小心_destroy的autocomplete
在Rails的嵌套表单中, 如果在model的accepts_nested_attributes_for后加入了:allow_destroy => true ,就可一通过在表单中提交一个_destroy,来控制是否删除嵌套属性。(嵌套表单)
问题出现在这样一个场景:
1、用户在编辑一个相册,删除了一些照片(并没有真正的删除,只是把_destroy隐藏域设置为true,并且隐藏了这些照片。如果此时提交,那么这些照片将被真正删除),但是,没有保存,而是点击了取消。
2、然后他点击浏览器“后退”按钮,又返回到编辑页面,浏览器缓存会让页面看起来和用户取消编辑前一样。有些照片被隐藏了。
3、刷新页面,那些被隐藏的照片又回来了。用户修改了一下相册的描述。保存。
4、然后发现,在步骤1中删除的那些照片被删掉了。原来,这是浏览器的自动填充功能(autocomplete)搞得鬼。在步骤1的时候浏览器记住了每个_destroy的值,又在步骤3中帮你填好了。
解决办法:
<%= f.hidden_field :_destroy, :autocomplete => 'off' %>
autocomplete这个属性,之前并不是HTML标准,只是浏览器都支持。直到HTML5才成为标准。它对所有的表单域都有效。
相关推荐
gufudhn 2020-06-12
yaohustiAC 2019-12-27
pythonclass 2019-11-07
geminihr 2015-03-19
仲崇峰 2015-06-02
83453065 2015-07-22
hubowei 2015-07-22
原為簡單 2017-02-21
87433764 2017-02-21
小肖 2017-05-12
89453862 2017-09-16
delmarks 2017-02-21
yesbuy00 2017-02-08
85403969 2016-10-25
gamecalo 2016-10-08
Web全栈笔记 2016-10-08
Kindlecode 2016-05-25