我正在尝试从服务应用程序渲染xml。
在模型中,关系定义为:
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:nil的未定义方法`macro':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
但是,我真的希望能够同时返回错误和其他集合。也许有人可以解释为什么我会收到这个错误。
答案 0 :(得分:3)
它不包括但是:您需要使用的方法
render :xml => @customer.to_xml(:include => [:licenses], :methods => [:errors]), :status => :unprocessable_entity