Hi all,
I’ve created a custom method called checkout in my app. I create an
order (which is done my adding products to my “cart”), assign it to my
client, and then I head to my checkout screen where I confirm the items
and enter their customer order number and complete the order (submit).
Everything works great except that it doesn’t display error messages.
I’m able to display a flash error notice (seen in complete_order method)
when things go wrong but it doesn’t specify the details like a normal
form would. The error messages should appear if the customer order
number is not unique for that client.
Below is the custom method (checkout) related code.
Order Model:
validates_uniqueness_of :customer_order_number, :scope => :client_id
Orders_controller:
def checkout
@order = current_order
end
def complete_order
@order = current_order
respond_to do |format|
if @order.update_attributes(params[:order])
@order.complete #sets submitted datetime and state to 'complete'
flash[:notice] = 'Thank you! Your order is being processed.'
format.html { redirect_to( products_path ) }
format.xml { head :ok }
else
flash[:error] = 'Please review your items' #added to confirm an
error is present
format.html { redirect_to( checkout_path ) }
format.xml { render :xml => @order.errors, :status =>
:unprocessable_entity }
end
end
end
And the form in the checkout view:
<% form_for @order, :url => { :controller => "orders", :action =>
"complete_order" } do |f| %>
<%= f.error_messages %>
<%= f.text_field :customer_order_number, :label => "Purchase Order
Number" %>
<p>
<%= f.submit 'Complete Order', :confirm => 'Are you sure?' %>
<small> or <%= link_to 'cancel', current_cart_path %></small>
</p>
<% end %>
Any idea how I can display the specific error messages?
Thank you in advance! -Tony