显示控制器关注的闪光警报
Display flash alert from controller's concern
我有一个控制器问题,它重新组合了访问控制的逻辑:
module AccessControl
extend ActiveSupport::Concern
def restrict
unless current_user
flash.now[:danger] = 'You must log in first'
redirect_to :root
end
end
end
包含在某些控制器中并用作 before_action
过滤器
class SomeController < ApplicationController
include AccessControl
before_action :restrict
end
但不知何故,闪现消息没有显示(如果从控制器调用其他闪现消息,它们会正确显示)。
知道为什么我不能从问题中调用即时消息吗?如果不是 expected/recommended 实现,我怎么可能拥有 DRY 控制器但仍然显示闪现消息?
尚未在ActiveSupport::Concern's nor ActiveDispach::Flash的文档中找到答案。我正在尝试一些替代方案,但其中 none 确实有效。
只需测试您的代码,它就可以工作。
根据您的代码,闪现消息仅在用户未登录时显示,因此请确保在测试时退出。
AJP 的 answer 解决了我的问题。
TLDR:将 flash[:danger]
与 redirect_to
结合使用
我有一个控制器问题,它重新组合了访问控制的逻辑:
module AccessControl
extend ActiveSupport::Concern
def restrict
unless current_user
flash.now[:danger] = 'You must log in first'
redirect_to :root
end
end
end
包含在某些控制器中并用作 before_action
过滤器
class SomeController < ApplicationController
include AccessControl
before_action :restrict
end
但不知何故,闪现消息没有显示(如果从控制器调用其他闪现消息,它们会正确显示)。
知道为什么我不能从问题中调用即时消息吗?如果不是 expected/recommended 实现,我怎么可能拥有 DRY 控制器但仍然显示闪现消息?
尚未在ActiveSupport::Concern's nor ActiveDispach::Flash的文档中找到答案。我正在尝试一些替代方案,但其中 none 确实有效。
只需测试您的代码,它就可以工作。
根据您的代码,闪现消息仅在用户未登录时显示,因此请确保在测试时退出。
AJP 的 answer 解决了我的问题。
TLDR:将 flash[:danger]
与 redirect_to