【问题标题】:Customize Devise Passwords error message自定义设计密码错误消息
【发布时间】:2018-08-24 06:49:37
【问题描述】:

我有一个实现设计的项目,但在覆盖密码控制器的消息时遇到问题。

当用户输入错误的电子邮件地址时,Devise 默认给出

Unable to find user with email {email}

我在devise.en.yml 中找不到覆盖此消息的密钥,并且在设计存储库中也找不到任何具有类似消息的内容。

除了覆盖控制器之外,我还有其他选择吗?任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 您要查找的错误信息是什么?在什么情况下?喜欢login 或failed_login, password updated failed ?您使用的是什么版本的设备?
  • 我认为错误似乎来自devise_token_auth。我发现错误here,您不必为消息覆盖控制器,您只需在文件中进行更改并确保您重新启动rails 服务器
  • @KedarnagMukanahallipatna,如前所述,我想覆盖在忘记密码表单中传递无效电子邮件 ID 时出现的消息。此外,devise.en.yml 中不会出现此错误。

标签: ruby-on-rails devise customization custom-errors


【解决方案1】:

添加具有以下结构的新语言环境:

en:
  devise_token_auth:
    passwords:
      user_not_found: "Your custom message"

当在忘记密码表单中传递无效电子邮件时,将显示此消息。

这条消息最初来自devise_token_auth gem。但是,如果您的语言环境文件中有相同的语言环境,它将覆盖 gem 的语言环境。

无论您将此语言环境放入哪个*.en.yml file 都没有关系。它可以是devise.en.yml,也可以添加一个名为devise_token_auth.en.yml 的新文件。只有结构很重要。

【讨论】:

  • 我一直在查看 devise 存储库,但完全忘记了我正在使用 devise_token_auth。对于所有来这里寻找的人,关键是here。
【解决方案2】:

如following link 中所述,您可以使用

生成设计控制器
rails generate devise:controllers user

然后您可以覆盖 create 或 update 操作。如果在新动作中包含super,它将调用父控制器动作然后执行代码。

您也可以将设计消息覆盖为explained in this post,您只需在设置中创建该语言环境

en:
  devise_token_auth:
    sessions:
      not_confirmed: "your message overwritten"

【讨论】:

  • 感谢您的快速响应,但我希望找到除覆盖控制器之外的其他方法。我真的很想通过覆盖消息here 来管理它,但没有相关的密钥。
  • 他们的钥匙在那里user_not_found: "Unable to find user with email '%{email}'."。密钥是user_not_found。
  • @KedarnagMukanahallipatna 我一直在研究 devise.en,而我不得不在 devise_token_auth 中检查它。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2023-04-01
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多