繁体   English   中英

使用 Rails + Devise 登录/注册时未定义的局部变量或方法“flash”

[英]Undefined local variable or method `flash' when signing in/up with Rails + Devise

尝试使用 devise 登录/注册时,会出现以下错误。

undefined local variable or method `flash' for #<Devise::SessionsController:0x00000000009b78>
devise (4.7.1) app/controllers/devise_controller.rb:159:in `set_flash_message'
devise (4.7.1) app/controllers/devise_controller.rb:166:in `set_flash_message!'
devise (4.7.1) app/controllers/devise/sessions_controller.rb:20:in `create'
actionpack (6.1.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.1) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.1) lib/action_controller/metal/rendering.rb:30:in `process_action'

提取来源:

      flash.now[key] = message if message.present?
    else
      flash[key] = message if message.present? # This throws an error.
    end

这是我正在使用的文件。

# models/user.rb
class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :posts, inverse_of: :author, dependent: :destroy
end

# routes.rb
Rails.application.routes.draw do
  devise_for :users

  resources :users, only: [:index, :show]
  resources :posts, only: [:index, :show, :create]

  root 'posts#index'

end

我试过 devise 版本 4.7.1 到 4.7.3。

版本

ruby '2.7.2'
gem 'rails', '~> 6.1.1'
gem 'devise', '~>4.7.1'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM