AnA*_*ice 2 ruby-on-rails devise ruby-on-rails-3
我的应用程序是rails 3 + devise.我正在为用户构建一个注册表单.如果用户没有输入电子邮件地址,我正在努力提供有用的错误消息.
我相信设计有一些魔力正在使它变得一团糟.在我的用户模型中,我有:
user.rb
validates :email,:presence => {:message => "XXXXXXX."}
Run Code Online (Sandbox Code Playgroud)
我的en.yml:
en:
activerecord:
attributes:
user:
fname: "First name"
lname: "Last name"
photo_content_type: "Picture"
errors:
messages:
blank: "cannot be blank"
too_short: "is too short (minimum %{count} characters)"
too_long: "is too long (maximum %{count} characters)"
models:
user:
attributes:
email:
taken: "the email address %{value} has already been registered"
password:
too_short: "the password is too short (minimum %{count} characters)"
Run Code Online (Sandbox Code Playgroud)
在我的注册页面中,如果用户没有输入电子邮件,我将收到以下@errors:
@messages={:email=>["cannot be blank", "XXXXXXX"]}>
Run Code Online (Sandbox Code Playgroud)
为什么我收到两条错误消息?我怎样才能得到一条错误消息.我需要找到一种方法来删除"不能空白".可以在user.rb中覆盖吗?
谢谢
您可以通过Devise完成验证,但更改其消息.根据指南,您应该为密钥编写自定义消息,activerecord.errors.models.user.attributes.email.blank以便它优先于默认值:
en:
activerecord:
attributes:
user:
fname: "First name"
lname: "Last name"
photo_content_type: "Picture"
errors:
messages:
blank: "cannot be blank"
too_short: "is too short (minimum %{count} characters)"
too_long: "is too long (maximum %{count} characters)"
models:
user:
attributes:
email:
blank: "XXXXXXX."
taken: "the email address %{value} has already been registered"
password:
too_short: "the password is too short (minimum %{count} characters)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1537 次 |
| 最近记录: |