如果子资源确实存在问题而不是父资源,那么添加错误以进行渲染的最佳方法是什么?在英语中我的意思是以下...想象下面的代码:
@foo = Foo.new
foochild = Foochild.new
// break foochild somehow
@foo << foochild
@foo.save
现在我做的时候:
format.xml { render :xml => @foo.errors }
我得到的是foochild无效的通知。它不包含我的validates_format_of方法中包含的消息。如何让它显示该消息而不是通用foochild无效?我是否需要做些什么才能使该消息冒泡到其父资源以显示在@ foo.errors中?
答案 0 :(得分:1)
始终对此类开发使用“validates_associated”。例如在您的控制器中
@foo = Foo.new
@foochild = @foo.foo_childs.build
if @foo.save
else
format.xml { render :xml => @foo.errors }
end
并在您的视图中
<%= error_messages_for :foo, :foo_child %>