Rails 3 - 获取一个字段的完整错误消息

Exi*_*iRe 12 ruby model-view-controller controller ruby-on-rails

我有user.errors我的控制器中的所有错误.所以,我有一个:user_login有错误的字段.如何才能从该字段获取完整的错误消息user.errors

我可以像这样得到这个字段的文本:

user.errors[:user_login] # Gives that 'can't be empty'
Run Code Online (Sandbox Code Playgroud)

但我真的想做那样的事情

user.errors.get_full_message_for_field[:user_login] # 'Your login can't be empty'
Run Code Online (Sandbox Code Playgroud)

Quv*_*Quv 22

嗯,我知道这个问题是在一年半之前为Rails 3.x明确发布的,但现在Rails 4.x似乎有你想要的方法,full_messages_for.

user.errors.full_messages_for(:user_login) #=> return an array
# if you want the first message of all the errors a specific attribute gets,
user.errors.full_messages_for(:user_login).first
# or
user.errors.full_messages_for(:user_login)[0]
Run Code Online (Sandbox Code Playgroud)

它比以前使用的更简洁user.errors.full_message(:user_login, user.errors[:user_login].first).


leb*_*eze 10

看看full_message这里:

http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-full_message

有点冗长,但你可以做类似的事情:

user.errors.full_message(:user_login, user.errors[:user_login])
Run Code Online (Sandbox Code Playgroud)