Ruby on rails 设计-即时通知

Ruby on rails 设计-即时通知,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,使用rails和Desive,无论何时登录或注销Desive,只要在页面上弹出一个从UI角度看似乎不必要的Flash通知,它通常都是非常明显的,对吗 是否有一种方法可以关闭Desive中用于登录和注销的快速通知 谢谢您可以转到本地化文件并自定义任何flash消息,即使指定空字符串也是如此。查看i8n下的文档,您将看到它是如何完成的。Desive有一种自定义此类行为的方法:重写控制器。打开设计源代码,找到app/controllers/sessions\u controller并将其复制到您的应用

使用rails和Desive,无论何时登录或注销Desive,只要在页面上弹出一个从UI角度看似乎不必要的Flash通知,它通常都是非常明显的,对吗

是否有一种方法可以关闭Desive中用于登录和注销的快速通知


谢谢

您可以转到本地化文件并自定义任何flash消息,即使指定空字符串也是如此。查看i8n下的文档,您将看到它是如何完成的。

Desive有一种自定义此类行为的方法:重写控制器。打开设计源代码,找到app/controllers/sessions\u controller并将其复制到您的应用程序中。Desive将开始使用您自己的控制器,而不是它自己的控制器。从那里,您可以轻松修改flash消息。

只需尝试在会话中添加此代码即可

class SessionsController < Devise::SessionsController
  after_action :clear_sign_signout_flash, :only => [:create, :destroy]
protected
  def clear_sign_signout_flash
    if flash.key?(:notice)
      flash.delete(:notice)
    end
  end
end
class sessioncontroller[:创建,:销毁]
受保护的
def清除\u签名\u注销\u闪存
如果闪烁键?(:注意)
flash.delete(:notice)
结束
结束
结束

希望这有帮助:-)

这个问题有正确且更新的答案:。

谢谢Steve,但我不想自定义,我想阻止它们被设置。设置一个空字符串是让它工作的黑客手段吗?奇怪的是,我删除了它“signed_in:'signed in successfully.”,它仍然出现。将字符串设置为空会显示一个空的flash,这是非常糟糕的:)我会让你参考
lib/controllers/internal_helpers.rb的源代码,然后查看
set_flash\u message
。它是受保护的,所以想必你“不应该”重击它。但是它是Ruby,所以你可以把它打开备份,让它忽略某些消息。Desive(从2.1.2开始)使用flash消息来存储内部状态,这可能会有更大的问题。这偶尔会导致只说“真”的闪光。在显示所有flash消息之前,您应该对其进行is_a?(字符串)检查。如果你这样做了,你也可以做一个礼物?检查它们,并将它们设置为清空yml文件。谢谢我正在尝试,但不知道如何更新routes.rb文件。你是家人吗?这不起作用“Desive_for:users,:controllers=>{:investments=>“investments”,:sessions=>“sessions”}。它使这些控制器中的方法无法再在Desive中找到视图。实际上,除了
Desive_for:users
之外,您不需要在路由中执行任何操作。从这里你有两个选择。创建一个类sessioncontroller
,然后覆盖designe使用您自己的flash消息提供的一些方法(请参见此处的designe::sessioncontroller:)。第二个选择是复制我链接到控制器/SaleStSeCuffer-RB中的所有东西,只替换SessionsController:SSESESTS控制器,然后修改你喜欢的东西。我认为这是设计中的一个错误特性。我已经完成了回购并修复了它。查看这是否解决了问题:重构:flash.delete(:notice)if flash.keys.include?(:notice)您必须在正确的位置创建控制器,并且必须修改路由以使用新控制器。看见