Может кто-нибудь объяснить, почему это происходит?
mybox:$ ruby script/console
Loading development environment (Rails 2.3.5)
>> foo = Foo.new
=> #<Foo id: nil, customer_id: nil, created_at: nil, updated_at: nil>
>> bar = Bar.new
=> #<Bar id: nil, bundle_id: nil, alias: nil, real: nil, active: true, list_type: 0, body_record_active: false, created_at: nil, updated_at: nil>
>> bar.save
=> false
>> bar.errors.each_full { |msg| puts msg }
Real can't be blank
Real You must supply a valid email
=> ["Real can't be blank", "Real You must supply a valid email"]
Пока все отлично, вот что я хочу прочитать в сообщении об ошибке. Теперь больше:
>> foo.bars << bar
=> [#<Bar id: nil, bundle_id: nil, alias: nil, real: nil, active: true, list_type: 0, body_record_active: false, created_at: nil, updated_at: nil>]
>> foo.save
=> false
>> foo.errors.to_xml
=> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<errors>\n <error>Bars is invalid</error>\n</errors>\n"
Это то, что я не могу понять. Почему я получаю Бары недействительно по сравнению с сообщениями об ошибках, показанными выше, ["Реальный не может быть пустым", "Реальный, вы должны указать действительный адрес электронной почты"] и т. Д.
В моем контроллере просто есть метод response_to со следующим:
format.xml { render :xml => @foo.errors, :status => :unprocessable_entity }
Как я могу выводить настоящие сообщения об ошибках, чтобы пользователь имел некоторое представление о том, что он сделал неправильно? Как мне написать свой метод рендеринга в моем контроллере, чтобы показать все соответствующие сообщения об ошибках?