众所周知,当登录过程失败时,Devise 使用 Flash 发出警报。没有 resource.errors 数组,只是闪烁。所以我的问题是它是如何做到的?我的意思是如何将这个功能用于我的目的?是否有用于将资源错误从 resource.errors 移动到闪存的 Devise 帮助器或控制器方法?或者唯一的方法是编写我自己的实现?
我试图自己弄清楚,但我失败了。
谢谢。
众所周知,当登录过程失败时,Devise 使用 Flash 发出警报。没有 resource.errors 数组,只是闪烁。所以我的问题是它是如何做到的?我的意思是如何将这个功能用于我的目的?是否有用于将资源错误从 resource.errors 移动到闪存的 Devise 帮助器或控制器方法?或者唯一的方法是编写我自己的实现?
我试图自己弄清楚,但我失败了。
谢谢。
Devise 使用 I18N 作为它的 flash 消息,它允许您完全自定义它们,甚至添加您自己的消息。看看config/locales/devise.en.yml
你的项目目录里面。在那里,您将看到 Devise 的 Flash 消息所需的所有英文翻译。
如果您查看SessionsController
Devise 中的内容,您将看到以下行:
set_flash_message(:notice, :signed_in) if is_navigational_format?
这将调用它们set_flash_message
并传入 flash 类型和所需的翻译。
至于想要将其用于您的目的,这实际上取决于您想要做什么。将其翻译成新语言就像在语言环境下添加 YAML 文件一样简单,例如config/locales/devise.es.yml
西班牙语,然后翻译现有文本。
除此之外的任何事情,例如添加新的 flash 消息,都需要覆盖默认的 Devise 控制器,这些示例可以在他们的wiki中找到,或者通过简单的Google 搜索