Output validations errors form causing type error?


I was wondering if it is possible to output validation errors in a
nested form? I suppose this should be possible, but I am experiencing
an error message that I can’t track down.

The error I get is the following :
TypeError in Store/orders#create
Showing app/views/store/orders/new.html.erb where line #45 raised:
can’t convert Array into String

This is ocurring in the following view code:
<% form_for :order, @order, :url => store_orders_url, :html => {:class
=> “myform”} do |order_form| %>
<%= order_form.error_messages %>

I can’t understand why this would be ocurring, because I was able to
inspect the errors object for @order in the log, and it seems normal
to me, I don’t know why it cause errors in outputting errors to the
view for this object. Here is the output of the inspect method:

errors object #<ActiveRecord::Errors:0x105c343c0 @errors=
{“customer_billing_state”=>[“must be present”], “card_number”=>[[“is
not a valid credit card number”]], “customer_select_state”=>["^State/
Province must be a U.S. state selected from the drop down list for
customers in United States"], “card_verifiation”=>[[“is required”]]},
@base=#<Order id: nil, created_at: nil, updated_at: nil, customer_id:
nil, gst: #BigDecimal:105d342c0,‘0.0’,9(18), qst: #<BigDecimal:
105d33ed8,‘0.0’,9(18)>, shipping_ca: #<BigDecimal:105d33ac8,‘0.0’,9(18)

, shipping_us: #BigDecimal:105bfb840,‘0.7E1’,9(18), currency:
“USD”, status: nil, comments: nil, customer_ip: “”,
payment_method: “Credit Card”, downloaded: nil, express_token: nil,
express_payer_id: nil, card_type: “visa”, card_expires_on:

If anyone has any idea where I can start looking to debug this error,
I would appreciated it very much.


Please ignore my post, I discovered what the problem was. I had been
manually adding errors to the order object from the validations of
another model (active merchant’s credit card class), and my mistake
was that I had added the errors directly, but the errors for each
attribute are an array of errors, so instead I just need to loop
through them and they add them to my order object using the errors.add
method. Just in case anyone else runs into a similar problem.


On Oct 7, 10:30 am, “[email protected][email protected]