<%= link_to '删除', @mymodel, confirm: '是否删除?', method: :delete %> 生成的 HTML 如下 Destroy
可是,为何我一点击就会触发弹出一个确认对话框呢?好生好奇啊,谁来解释一下。
jquery-rails 这个东东...
顺便补充一个问题: 点删除再点确定后,如果控制器处于认证过滤下,删除了当前登录用户的 session,有人遇到过这种情况吗?
#2 楼 @zhangjingqiang 估计是 csrf 的 token 没加上之类,如果是自己构造的 post 就很容易遇到这类问题
看这里就知道了:https://github.com/rails/jquery-ujs/blob/master/src/rails.js#L207
#3 楼 @fsword 果然是!规约真严格呀。
#5 楼 @zhangjingqiang 这个不是什么严格的规约,是为了防止 rails 被攻击,csrf 是一种很广泛的攻击方式,rails 的 link_to,form 中透明开启这个防攻击特性。 顺便说一句,rails 作为 framework 提供了很多安全方面的辅助,但是 rails 的简单也导致使用者对相关知识的缺失,我强烈建议 rails 开发人员认真读一下 rails.js 这个文件(有 for prototype 和 for jquery 的,对比阅读更有收获),更进一步,如果有时间,了解一下 web 领域的常见安全知识也很有意义。 ruby 的文化特点应该是减少重复,但不是让自己成为小白,相反,个人认为用 ruby 的人应该有勇气成为精英