mač*_*ček 12 validation ruby-on-rails internationalization ruby-on-rails-3
在我们的注册表格中,我们 validates_uniqueness_of :email
当用户尝试使用我们的注册表单并指定现有的电子邮件地址时,我希望他们看到这样的错误消息
该邮件地址已被使用.如果您在登录时遇到问题,可以重置密码
显然,我想使用命名路由作为链接,但我的用户模型无法访问它.我怎么能做到这一点?
附注:我们将很快为我们的应用程序提供翻译,所有这些错误消息将最终出现在YAML文件中.我可以以某种方式new_password_url在我的YAML语言环境文件中注入一条消息吗?(例如config/locales/en.yml)
Ell*_*son 14
我知道这是一个老问题,但对于想要在错误消息中插入链接的未来用户,这里有一些适用于我的指南.
首先,I18n错误消息已经被假定为html安全,因此您可以继续编写合适的错误消息.在这个例子中,我正在更改"发送电子邮件"消息.
# config/locales/en.yml
activerecord:
errors:
models:
user:
attributes:
email:
taken: 'has already been taken. If this is your email address, try <a href="%{link}">logging in</a> instead.'
Run Code Online (Sandbox Code Playgroud)
注意插值变量%link.
现在您需要在验证器中传递该变量的值,如下所示:
# app/models/user.rb
validates :email, :uniqueness => {:link => Rails.application.routes.url_helpers.login_path}
Run Code Online (Sandbox Code Playgroud)
(默认情况下,你在这里传递的任何选项将自动发送到在翻译的I18n作为变量,包括像一些特殊的预填充变量%value,%model等等)
而已!您现在在错误消息中有一个链接.
| 归档时间: |
|
| 查看次数: |
4285 次 |
| 最近记录: |