2010-10-27 72 views
0

我试图从服务应用程序呈现xml。在to_xml中包含ActiveRecord错误时抛出NoMethodError

在该模型中,所述关系被限定为:

class Customer < ActiveRecord::Base 
    has_many :licenses 
    accepts_nested_attributes_for :licenses 
end 

在我的控制器,我有以下代码:

if @customer.save 
    render :xml => @customer, :status => :created 
else 
    render :xml => @customer.to_xml(:include => [:errors, :licenses]), :status => :unprocessable_entity 
end 

但这失败,NoMethodError:未定义的方法`宏”为零:NilClass错误。

在控制台上,我可以复制误差足够简单:

>params = {...} 
>c = Customer.new(params) 
>c.save 
=> false 
>c.errors 
=> #<ActiveRecord::Errors::... 
>c.to_xml(:include => :errors) 
NoMethodError: undefined method `macro' for nil:NilClass 
... Stack Trace ... 
>c.errors.to_xml 
=>XML Showing Errors 

我知道,我可以使错误很容易够XML作为:

render :xml => @customer.errors 

但是,我真的很喜欢能够返回错误和这个其他集合。也许有人可以对我为什么得到这个错误提供一些见解。

回答

3

它不包括,但:你需要使用

render :xml => @customer.to_xml(:include => [:licenses], :methods => [:errors]), :status => :unprocessable_entity 
+0

感谢方法,这个工作的魅力。 – idbentley 2010-10-27 14:53:39