views:

54

answers:

0

I'm having a problem making serialized columns in my model persist correctly in forms. If my model validation fails I want to redisplay the "new" page with all my model data still in the forms. Right now, everything except the serialized fields seem to persist (if my Order fails to purchase, on the "new" page the email is still filled in but the shipping address fields are not). Is this a Rails bug or am I doing something wrong?

My model:

class Order < ActiveRecord::Base
    serialize :shipping_address
end

My controller:

 def new
   @order = Order.new
 end

def create
  @order = Order.new params[:order]
  if @order.purchase then render :action => "success"
  else render :action => "new"
  end      
end

My view, new.html.haml:

= form_for @order do |f|
   - if @order.errors.any?
  #errorExplanation
    %p The following errors occurred:
    %ul
      - for msg in @order.errors.full_messages
        %li= msg
  %h2 Billing Information
  = f.label :email
  = f.text_field :email
  %h2 Shipping Address
  = f.fields_for :shipping_address do |b|
    %p.field.address
      = b.label :address1
      = b.text_field :address1
 %p= f.submit "Place Order"