ActionController::禁用JS/Ajax请求时InvalidAuthenticationToken

我有两个带有选项remote:true的表单;一个向createaction发送Ajax请求,另一个向destroyaction发送Ajax请求

启用JavaScript时所有工作都会被罚款,但如果禁用JavaScript,然后单击,则会出现以下错误:

ActionController::InvalidAuthenticationToken PersonController#创建

显示此错误的原因,以及如何修复它

注意:我使用的是Rails 4

更新

当我使用不带选项remote:true的普通表单时,rails会自动为身份验证令牌插入一个隐藏字段,但当我在表单中使用remote:true时,HTML代码中没有这样的字段。似乎当有remote选项时,Rails会以不同的方式处理身份验证令牌,那么我如何在这两种情况下都能做到这一点呢

奇怪的是,rails 4改变了这种行为。http://www.alfajango.com/blog/rails-4-whats-new/

Rails表单现在不会在表单中呈现CSRF字段,除非您明确将其定义为表单的选项:

<%[email protected]\u模型的表单:remote=>真实性:真实性\u令牌=>真do | f |%>
<%结束%>

添加此选项允许您在关闭Javascript时优雅地降级为HTML回退

发表评论