Rails 5 中的 ActionController::InvalidAuthenticityToken

mar*_*ark 4 ruby ruby-on-rails

我正在ActionController::InvalidAuthenticityToken使用 rails 5。它可以正常工作一段时间,然后就放弃了工作。

# Application Controller
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
end
Run Code Online (Sandbox Code Playgroud)

我正在使用 rails 表单助手,并传入一个表单对象

# price_history/new.html.erb
<%= form_for @price_history_form, url: 'price_history' do |f| %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

我可以看到在 html 中生成的真实性令牌,并传递到控制器中..

class PriceHistoriesController < ApplicationController
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*ek_ 6

无需使用 Rails 原生 UJS 实现禁用 Turbolinks 即可轻松修复:

$(document).on('turbolinks:load', function() {
    Rails.refreshCSRFTokens();
});
Run Code Online (Sandbox Code Playgroud)