Rails 范围设计因 InvalidAuthenticityToken 而失败

Rails devise with scope fails with InvalidAuthenticityToken

我们正在使用 Rails 4.2.1 和最新版本的 Devise (3.4.1),但我相信其他版本也会出现同样的错误。

自从我们将范围添加到 routes.rb:

scope '/admin' do

  root to: "places#index"

  devise_for :users, controllers: { registrations: "users/registrations" }

...

Devise 无法登录或退出,出现以下错误:

ActionController::InvalidAuthenticityToken at /admin/users/sign_out.

只要我们移除范围,一切都完美无缺。

我们尝试通过设计使用自定义路由,但没有任何帮助。


registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:first_name, :last_name, :organization)
  end
end

您应该尝试按如下方式定义您的设计范围:

devise_for :users 
devise_scope :user do
  scope '/admin' do
    get "/your_route" ...
  end
end

其余路由分别应用“/admin”范围。