Task-G-CheckOut
Get HTML, XML, and JSON formatted views working for who_bought requests. Experiment with including the order information in the XML view by rendering @product.to_xml(:include => :orders). Do the same thing for JSON. Discuss
What happens if you click the “Checkout” button in the sidebar while the checkout screen is already displayed? Can you find a way to disable the button in this circumstance? (Hint: variables set in the controller are available in layouts and partials as well as in the directly rendered template.) Discuss
The list of possible payment types is currently stored as a constant in the Order class. Can you move this list into a database table? Can you still make validation work for the field? Discuss
George Says
I ran into below bizzare behavior, can anyone shed some light?
# The only difference between below two is the space between "redirect_to" and "(store_url"
#format.html { redirect_to (store_url, :notice => 'Thank you for your order' ) } #don't work??
#format.html { redirect_to(store_url, :notice => 'Thank you for your order.') } #works!!
### error in broswer
C:/wug/proj_RoR/depot/app/controllers/orders_controller.rb:63: syntax error, unexpected ',', expecting ')'
...t.html {redirect_to (store_url, :notice => 'Thank you for yo...
... ^
C:/wug/proj_RoR/depot/app/controllers/orders_controller.rb:63: syntax error, unexpected ')', expecting '}'
...=> 'Thank you for your order.') }
... ^
Mike says
redirect_to(...) is a function call with the arguments enclosed in the parens.
redirect_to (...) is a function call with one argument. The argument is enclosed in parens, but is syntactically incorrect: (foo, bar) is not a legal expression.
Michael says
Did anyone else have a problem with the orders_controllers_test.rb for test “should get new”? (p. 160 of the book).
The line
LineItem.create(:cart => cart, :product => products(:ruby))ends up causing an error because price never gets filled in on the line_item, because, as far as I can tell the line_items_controller#create method never gets called, which calls the Cart@add_product method, which is the one that actually fills in price on a line_item. So the fix for me was to do instead:
LineItem.create(:cart => cart, :product => products(:ruby), :price => products(:ruby).price)
If I’m doing something stupid, please let me know.

