[英]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.