class Article < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :article
validates_presence_of :body
validates_presence_of :author_name
end
如果我将author_name留空,那么我将收到正确的验证错误。一切都好。
>> Article.first.comments.create(:body => 'dummy body').errors.full_messages
=> ["Please enter your name"]
看看这个例子。
>> a = Article.first
>> a.comments.create(:body => 'dummy body')
>> a.errors.full_messages
["Comments is invalid"]
我发送文章的实例(在本例中为a)来查看图层。我想知道如何获得访问权限 从实例对象a。请输入您的名字'。
答案 0 :(得分:4)
您可以将新创建的评论分配给它自己的变量,并将其发送到视图中。
@article = Article.first
@comment = @article.comments.create(:body => 'dummy body')
然后,您可以使用error_messages_for 'article', 'comment'
显示两个对象的错误。我不知道是否有办法自动显示单个子错误,而不是“X无效”......
答案 1 :(得分:1)
只是补充Daniel的答案,如果您想自定义'Comments is invalid'
错误消息,我找到了通过i18n实现此目的的方法:
# config/locales/en.yml
en:
activerecord:
attributes:
article:
comments: Comment
这样你就会得到语法正确的'Comment is invalid'
:)
您还可以更改'is invalid'
部分:
# config/locales/en.yml
en:
activerecord:
errors:
models:
article:
attributes:
comments:
invalid: are invalid
这样你就会获得'Comments are invalid'
。
答案 2 :(得分:0)
假设视图是尝试创建对象的表单,您应该能够完全按照上面的操作执行:
@article.errors.full_messages
只能访问该对象的其他视图(例如索引或显示视图)不会有任何错误,因为该数组仅在尝试创建或更新文章时填充。