在Ruby on Rails中捕获子资源的错误

时间:2010-04-20 01:40:16

标签: ruby-on-rails activerecord

如果子资源确实存在问题而不是父资源,那么添加错误以进行渲染的最佳方法是什么?在英语中我的意思是以下...想象下面的代码:

@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中?

1 个答案:

答案 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 %>