Agile Web Development with Rails, Edition 4

Agile Web Development with Rails, Edition 4

11.5 Iteration F5: Testing AJAX changes 11.3 Iteration F3: Highlighting Changes

11.4 Iteration F4: Hide an Empty Cart

edit app/views/line_items/create.js.rjs
page.replace_html('cart', render(@cart))
 
page[:cart].visual_effect :blind_down if @cart.total_items == 1
 
page[:current_item].visual_effect :highlight,
                                  :startcolor => "#88ff88",
                                  :endcolor => "#114411"
edit app/models/cart.rb
class Cart < ActiveRecord::Base
  has_many :line_items, :dependent => :destroy
 
  def add_product(product_id)
    current_item = line_items.where(:product_id => product_id).first
    if current_item
      current_item.quantity += 1
    else
      current_item = LineItem.new(:product_id=>product_id)
      line_items << current_item
    end
    current_item
  end
 
  def total_price
    line_items.to_a.sum { |item| item.total_price }
  end
 
  def total_items
    line_items.sum(:quantity)
  end
end
ls -p app
controllers/
helpers/
models/
views/
ls -p app/helpers
application_helper.rb
carts_helper.rb
line_items_helper.rb
products_helper.rb
store_helper.rb
edit app/views/layouts/application.html.erb
      <%= hidden_div_if(@cart.line_items.empty?, :id => "cart") do %>
        <%= render @cart %>
      <% end %>
edit app/helpers/application_helper.rb
module ApplicationHelper
  def hidden_div_if(condition, attributes = {}, &block)
    if condition
      attributes["style"] = "display: none"
    end
    content_tag("div", attributes, &block)
  end
end
edit app/controllers/carts_controller.rb
  def destroy
    @cart = Cart.find(params[:id])
    @cart.destroy
    session[:cart_id] = nil
 
    respond_to do |format|
      format.html { redirect_to(store_url) }
      format.xml  { head :ok }
    end
  end
pub depot_n
get /carts/2
Your Cart
Web Design for Developers $85.90
Programming Ruby 1.9 $99.00
Total $184.90
Home
Questions
News
Contact
Your Cart
Web Design for Developers $85.90
Programming Ruby 1.9 $99.00
Total $184.90
post /carts/2
You are being redirected.
get http://localhost:3000/
Home
Questions
News
Contact

Your Pragmatic Catalog

Debug

Debug It!

Professional programmers develop a knack of unerringly zeroing in on the root cause of a bug. They can do that because they've written a lot of buggy code and then gained experience fixing it. This book captures all this experience -- use it, and you'll find you write fewer bugs, and the ones you do write will become easier to hunt down.

$34.95
Ruby

Programming Ruby 1.9

Ruby is the fastest growing and most exciting dynamic language out there. If you need to get working programs delivered fast, you should add Ruby to your toolbox.

$49.50
Wd4d

Web Design for Developers

Web Design for Developers will show you how to make your web-based application look professionally designed. We'll help you learn how to pick the right colors and fonts, avoid costly interface and accessibility mistakes -- your application will really come alive. We'll also walk you through some common Photoshop and CSS techniques and work through a web site redesign, taking a new design from concept all the way to implementation.

$42.95
get /
Home
Questions
News
Contact

Your Pragmatic Catalog

Debug

Debug It!

Professional programmers develop a knack of unerringly zeroing in on the root cause of a bug. They can do that because they've written a lot of buggy code and then gained experience fixing it. This book captures all this experience -- use it, and you'll find you write fewer bugs, and the ones you do write will become easier to hunt down.

$34.95
Ruby

Programming Ruby 1.9

Ruby is the fastest growing and most exciting dynamic language out there. If you need to get working programs delivered fast, you should add Ruby to your toolbox.

$49.50
Wd4d

Web Design for Developers

Web Design for Developers will show you how to make your web-based application look professionally designed. We'll help you learn how to pick the right colors and fonts, avoid costly interface and accessibility mistakes -- your application will really come alive. We'll also walk you through some common Photoshop and CSS techniques and work through a web site redesign, taking a new design from concept all the way to implementation.

$42.95
post /line_items?product_id=3
You are being redirected.
get http://localhost:3000/
Your Cart
Programming Ruby 1.9 $49.50
Total $49.50
Home
Questions
News
Contact

Your Pragmatic Catalog

Debug

Debug It!

Professional programmers develop a knack of unerringly zeroing in on the root cause of a bug. They can do that because they've written a lot of buggy code and then gained experience fixing it. This book captures all this experience -- use it, and you'll find you write fewer bugs, and the ones you do write will become easier to hunt down.

$34.95
Ruby

Programming Ruby 1.9

Ruby is the fastest growing and most exciting dynamic language out there. If you need to get working programs delivered fast, you should add Ruby to your toolbox.

$49.50
Wd4d

Web Design for Developers

Web Design for Developers will show you how to make your web-based application look professionally designed. We'll help you learn how to pick the right colors and fonts, avoid costly interface and accessibility mistakes -- your application will really come alive. We'll also walk you through some common Photoshop and CSS techniques and work through a web site redesign, taking a new design from concept all the way to implementation.

$42.95

Run tests... oops.

rake test
(in /home/rubys/svn/rails4/Book/util/work-193/depot)
Loaded suite /home/rubys/.rvm/gems/ruby-1.9.3-r28190%global/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
........
Finished in 0.204055 seconds.
 
8 tests, 29 assertions, 0 failures, 0 errors, 0 skips
 
Test run options: --seed 7833
Loaded suite /home/rubys/.rvm/gems/ruby-1.9.3-r28190%global/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
...E...F.EEEE....EEEE..
Finished in 3.667334 seconds.
 
  1) Error:
test_should_get_index(CartsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  2) Failure:
test_should_create_line_item(LineItemsControllerTest) [test/functional/line_items_controller_test.rb:28]:
Expected response to be a redirect to <http://test.host/carts/980190963> but was a redirect to <http://test.host/>
 
  3) Error:
test_should_get_edit(LineItemsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  4) Error:
test_should_get_index(LineItemsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  5) Error:
test_should_get_new(LineItemsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  6) Error:
test_should_show_line_item(LineItemsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  7) Error:
test_should_get_edit(ProductsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  8) Error:
test_should_get_index(ProductsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
  9) Error:
test_should_get_new(ProductsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
 10) Error:
test_should_show_product(ProductsControllerTest):
ActionView::Template::Error: undefined method `line_items' for nil:NilClass
    /home/rubys/git/rails/activesupport/lib/active_support/whiny_nil.rb:48:in `method_missing'
    /home/rubys/svn/rails4/Book/util/work-193/depot/app/views/layouts/application.html.erb:21:in `_render_template_596283834_81416950_315915136'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:134:in `block in render'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/template.rb:126:in `render'
    /home/rubys/git/rails/actionpack/lib/action_view/render/layouts.rb:84:in `_render_layout'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:61:in `block in _render_template'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
    /home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:48:in `instrument'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:55:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/action_view/render/rendering.rb:25:in `render'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:114:in `_render_template'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:108:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/renderers.rb:47:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:101:in `render_to_string'
    /home/rubys/git/rails/actionpack/lib/abstract_controller/rendering.rb:92:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:17:in `render'
    /home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:39:in `block (2 levels) in render'
    /home/rubys/git/rails/activesupport/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
 
23 tests, 26 assertions, 1 failures, 9 errors, 0 skips
 
Test run options: --seed 34766
Errors running test:functionals!

11.5 Iteration F5: Testing AJAX changes 11.3 Iteration F3: Highlighting Changes