adding items to cart first attemp fail

hi im workiing on ruby on rails im just wondering if my add_product is
wrong because when i add my product in to my cart at first attemp it
fail and give me a

nil cannot concien bigdecimal error

but clicking return from my browser and add item at the second attemp it
worked fine and but didnt count my first attemp of adding my product
this is my add_product method

my model/cart.rb :
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 = current_item.quantity.to_i + 1
      else
        current_item = LineItem.new(:product_id=>product_id)
        line_items << current_item
      end
        current_item
   end

  def total_price
   Array.wrap(line_items).sum { |item| item.total_price }
  end

my cart/show.html.rb:
<div class="cart_title" >Your Cart</div>
    <table>
        <% for item in @cart.line_items %>
    <tr>
        <td><%= item.quantity %>&times;</td>
        <td><%= item.product.title %></td>
    <td class="item_price" ><%= number_to_currency(item.total_price)
%></td>
    </tr>
    <% end %>
        <tr class="total_line" >
        <td colspan="2" >Total</td>
        <td class="total_cell" ><%=
number_to_currency(@cart.total_price) %></td>
    </tr>
    </table>
        <%= button_to 'Empty cart', @cart, :method => :delete,
        :confirm => 'Are you sure?' %>

my model/line_item.rb
def total_price
     if product.price
       product.price = product.price * quantity
     else
        0.to_d
     end
   end

full trace:

app/models/line_item.rb:14:in `*'
app/models/line_item.rb:14:in `total_price'
app/views/carts/show.html.erb:7:in `block in
_app_views_carts_show_html_erb___389431939__618846538'
activerecord (3.1.1)
lib/active_record/associations/collection_proxy.rb:91:in `each'
activerecord (3.1.1)
lib/active_record/associations/collection_proxy.rb:91:in
`method_missing'
app/views/carts/show.html.erb:3:in
`_app_views_carts_show_html_erb___389431939__618846538'
actionpack (3.1.1) lib/action_view/template.rb:144:in `block in render'
activesupport (3.1.1) lib/active_support/notifications.rb:55:in
`instrument'
actionpack (3.1.1) lib/action_view/template.rb:142:in `render'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:40:in
`block (2 levels) in render_template'
actionpack (3.1.1) lib/action_view/renderer/abstract_renderer.rb:33:in
`block in instrument'
activesupport (3.1.1) lib/active_support/notifications.rb:53:in `block
in instrument'
activesupport (3.1.1)
lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.1.1) lib/active_support/notifications.rb:53:in
`instrument'
actionpack (3.1.1) lib/action_view/renderer/abstract_renderer.rb:33:in
`instrument'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:39:in
`block in render_template'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:47:in
`render_with_layout'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:38:in
`render_template'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:12:in
`block in render'
actionpack (3.1.1) lib/action_view/renderer/abstract_renderer.rb:22:in
`wrap_formats'
actionpack (3.1.1) lib/action_view/renderer/template_renderer.rb:9:in
`render'
actionpack (3.1.1) lib/action_view/renderer/renderer.rb:36:in
`render_template'
actionpack (3.1.1) lib/action_view/renderer/renderer.rb:17:in `render'
actionpack (3.1.1) lib/abstract_controller/rendering.rb:120:in
`_render_template'
actionpack (3.1.1) lib/action_controller/metal/streaming.rb:250:in
`_render_template'
actionpack (3.1.1) lib/abstract_controller/rendering.rb:114:in
`render_to_body'
actionpack (3.1.1) lib/action_controller/metal/renderers.rb:30:in
`render_to_body'
actionpack (3.1.1) lib/action_controller/metal/compatibility.rb:43:in
`render_to_body'
actionpack (3.1.1) lib/abstract_controller/rendering.rb:99:in `render'
actionpack (3.1.1) lib/action_controller/metal/rendering.rb:16:in
`render'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:40:in
`block (2 levels) in render'
activesupport (3.1.1) lib/active_support/core_ext/benchmark.rb:5:in
`block in ms'
/home/led/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in
`realtime'
activesupport (3.1.1) lib/active_support/core_ext/benchmark.rb:5:in `ms'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:40:in
`block in render'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:78:in
`cleanup_view_runtime'
activerecord (3.1.1)
lib/active_record/railties/controller_runtime.rb:24:in
`cleanup_view_runtime'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:39:in
`render'
actionpack (3.1.1) lib/action_controller/metal/implicit_render.rb:10:in
`default_render'
actionpack (3.1.1) lib/action_controller/metal/mime_responds.rb:268:in
`block in retrieve_response_from_mimes'
actionpack (3.1.1) lib/action_controller/metal/mime_responds.rb:195:in
`call'
actionpack (3.1.1) lib/action_controller/metal/mime_responds.rb:195:in
`respond_to'
app/controllers/carts_controller.rb:22:in `show'
actionpack (3.1.1) lib/action_controller/metal/implicit_render.rb:4:in
`send_action'
actionpack (3.1.1) lib/abstract_controller/base.rb:167:in
`process_action'
actionpack (3.1.1) lib/action_controller/metal/rendering.rb:10:in
`process_action'
actionpack (3.1.1) lib/abstract_controller/callbacks.rb:18:in `block in
process_action'
activesupport (3.1.1) lib/active_support/callbacks.rb:416:in
`_run__371692982__process_action__266900328__callbacks'
activesupport (3.1.1) lib/active_support/callbacks.rb:386:in
`_run_process_action_callbacks'
activesupport (3.1.1) lib/active_support/callbacks.rb:81:in
`run_callbacks'
actionpack (3.1.1) lib/abstract_controller/callbacks.rb:17:in
`process_action'
actionpack (3.1.1) lib/action_controller/metal/rescue.rb:17:in
`process_action'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:30:in
`block in process_action'
activesupport (3.1.1) lib/active_support/notifications.rb:53:in `block
in instrument'
activesupport (3.1.1)
lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.1.1) lib/active_support/notifications.rb:53:in
`instrument'
actionpack (3.1.1) lib/action_controller/metal/instrumentation.rb:29:in
`process_action'
actionpack (3.1.1) lib/action_controller/metal/params_wrapper.rb:201:in
`process_action'
activerecord (3.1.1)
lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.1.1) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.1.1) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.1.1) lib/action_controller/metal.rb:193:in `dispatch'
actionpack (3.1.1) lib/action_controller/metal/rack_delegation.rb:14:in
`dispatch'
actionpack (3.1.1) lib/action_controller/metal.rb:236:in `block in
action'
actionpack (3.1.1) lib/action_dispatch/routing/route_set.rb:65:in `call'
actionpack (3.1.1) lib/action_dispatch/routing/route_set.rb:65:in
`dispatch'
actionpack (3.1.1) lib/action_dispatch/routing/route_set.rb:29:in `call'
rack-mount (0.8.3) lib/rack/mount/route_set.rb:152:in `block in call'
rack-mount (0.8.3) lib/rack/mount/code_generation.rb:96:in `block in
recognize'
rack-mount (0.8.3) lib/rack/mount/code_generation.rb:96:in
`optimized_each'
rack-mount (0.8.3) lib/rack/mount/code_generation.rb:95:in `recognize'
rack-mount (0.8.3) lib/rack/mount/route_set.rb:141:in `call'
actionpack (3.1.1) lib/action_dispatch/routing/route_set.rb:532:in
`call'
actionpack (3.1.1)
lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.3.6) lib/rack/etag.rb:23:in `call'
rack (1.3.6) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/params_parser.rb:21:in
`call'
actionpack (3.1.1) lib/action_dispatch/middleware/flash.rb:243:in `call'
rack (1.3.6) lib/rack/session/abstract/id.rb:195:in `context'
rack (1.3.6) lib/rack/session/abstract/id.rb:190:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/cookies.rb:331:in
`call'
activerecord (3.1.1) lib/active_record/query_cache.rb:62:in `call'
activerecord (3.1.1)
lib/active_record/connection_adapters/abstract/connection_pool.rb:477:in
`call'
actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:29:in
`block in call'
activesupport (3.1.1) lib/active_support/callbacks.rb:392:in
`_run_call_callbacks'
activesupport (3.1.1) lib/active_support/callbacks.rb:81:in
`run_callbacks'
actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:28:in
`call'
actionpack (3.1.1) lib/action_dispatch/middleware/reloader.rb:68:in
`call'
rack (1.3.6) lib/rack/sendfile.rb:101:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/remote_ip.rb:48:in
`call'
actionpack (3.1.1)
lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
railties (3.1.1) lib/rails/rack/logger.rb:13:in `call'
rack (1.3.6) lib/rack/methodoverride.rb:24:in `call'
rack (1.3.6) lib/rack/runtime.rb:17:in `call'
activesupport (3.1.1)
lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.3.6) lib/rack/lock.rb:15:in `call'
actionpack (3.1.1) lib/action_dispatch/middleware/static.rb:53:in `call'
railties (3.1.1) lib/rails/engine.rb:456:in `call'
railties (3.1.1) lib/rails/rack/content_length.rb:16:in `call'
railties (3.1.1) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.3.6) lib/rack/handler/webrick.rb:59:in `service'
/home/led/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in
`service'
/home/led/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in
`run'
/home/led/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in
`block in start_thread'

im having a problem in adding my first item in to my cart it fails but
when adding second time it worked fine im just wondering if my adding
product method is right? thanks in advance more power to us!