NoMethodError выбрасывается при включении ошибок ActiveRecord в to_xml - PullRequest
0 голосов
/ 27 октября 2010

Я пытаюсь отобразить 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: undefined метод `macro 'для ошибки nil: 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

Но мне бы очень хотелось иметь возможность возвращать как ошибки, так и эту другую коллекцию. Может быть, кто-то может пролить свет на то, почему я получаю эту ошибку.

1 Ответ

3 голосов
/ 27 октября 2010

это не включает, но: методы, которые вам нужно использовать

render :xml => @customer.to_xml(:include => [:licenses], :methods => [:errors]), :status => :unprocessable_entity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...