Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActionController::Rails 5中的InvalidAuthenticationToken_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails ActionController::Rails 5中的InvalidAuthenticationToken

Ruby on rails ActionController::Rails 5中的InvalidAuthenticationToken,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在rails 5中获得了ActionController::InvalidAuthenticationToken。它正常工作了一段时间,然后就放弃了工作 #应用程序控制器 类ApplicationControllertrue,然后url:需要以/开始,不确定问题的内部原因,但这个js为我解决了这个问题(启用了turbolinks的rails 5.1): 它更新头部csrf令牌,以便与表单csrf令牌匹配。 想法如下:一个简单的修复程序,无需使用Rails原生UJS实现禁用TurboLink:

我在rails 5中获得了
ActionController::InvalidAuthenticationToken
。它正常工作了一段时间,然后就放弃了工作

#应用程序控制器
类ApplicationController
我正在使用rails表单助手,并传入一个表单对象

#price_history/new.html.erb
...
我可以看到真实性令牌在html中生成,并传递到控制器中

class PriceHistoriesController < ApplicationController
class PriceHistoriesController

我不知道为什么会这样。有什么想法吗?

尝试禁用TurboLink。您正在运行什么版本的Rails


有关禁用TurboLink的帮助,请参阅此处:

问题在于
:url
选项。根据此Rails问题,当您使用它时,它将引发该错误:

显然,这个问题有两种解决方案:

1) 禁用表单中的turbolink(
'data-no-turbolink'=>true


2) 从控制器操作中删除
呈现流:true
,为可能找到该链接或表单的任何其他人呈现该链接或表单。。有两个问题


Turbo-links添加了
'data-no-turbolink'=>true
,然后url:需要以
/

开始,不确定问题的内部原因,但这个js为我解决了这个问题(启用了turbolinks的rails 5.1):

它更新头部csrf令牌,以便与表单csrf令牌匹配。
想法如下:

一个简单的修复程序,无需使用Rails原生UJS实现禁用TurboLink:

$(document).on('turbolinks:load', function() {
    Rails.refreshCSRFTokens();
});

在什么情况下会出现这种错误?还是你一直都能收到?嗨,AlexanderLuna,现在提交每份表格。我已经多次重新启动服务器,关闭浏览器等等@mark你明白了吗?如果是这样,请随时提交您自己的答案或标记正确的答案,以便遇到相同问题的其他人可以更轻松地找到解决方案。@oneptune,yep turbolinks+the:url选项!感谢禁用某个功能来解决问题并不是一个答案。这需要有一个正确的答案。“url:需要以/”开头-这就是为我修复它的原因!
$(document).on('turbolinks:load', function() {
    Rails.refreshCSRFTokens();
});