abon
January 12, 2007, 3:19am
1
I’m following the depot application in the rails bible Agile Web
Development with Rails. In interation E1
NoMethodError in Admin#checkout
Showing app/views/admin/checkout.rhtml where line #12 raised:
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.include?
Extracted source (around line #12 ):
9: <% form_for :list, :url => { :action => :save_list } do |form| %>
10:
11: List Name:
12:
13:
I have a page with all the product listed. And I’m creating the list by
choosing from products on this page.
For database and model setting I have
product.rb
has many list_item
list.rb
has many list_item
list_item.rb
class ListItem
#belongs_to :list
#belongs_to :product
include Reloadable
attr_reader :product, :quantity
The lines I commented out will generate errors as follows
NoMethodError
undefined method `belongs_to’ for ListItem:Class
RAILS_ROOT: C:/INSTAN~1/rails_apps/test/config/…
Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/models/list_item.rb:4
#{RAILS_ROOT}/app/controllers/application.rb:8
This error occured while loading the following files:
application.rb
=> model list_item.rb
list_item.rb
I think this is the root of the nil object problem in checkout.
Since line_item is not correctly related to list and product.
So the list is a nil object.
Anyone knows why "belongs to " is not recognized?
Thanks in advance
abon
January 12, 2007, 4:05am
2
class ListItem
#belongs_to :list
#belongs_to :product
include Reloadable
attr_reader :product, :quantity
ListItem needs to extend ActiveRecord::Base
class ListItem < ActiveRecord::Base
belongs_to :list
belongs_to :product
...
end
abon
January 12, 2007, 6:20am
3
Snowman wrote:
class ListItem
#belongs_to :list
#belongs_to :product
include Reloadable
attr_reader :product, :quantity
ListItem needs to extend ActiveRecord::Base
class ListItem < ActiveRecord::Base
belongs_to :list
belongs_to :product
...
end
Thanks! belongs_to is recognized.
But the nil object problem still remains.
My reasoning about the “belongs_to unrecognition” to “nil object” seems
to be wrong.
Followings are my the action capture the list item.
def add_to_list
begin
@product = Product.find(params[:id])
rescue
logger.error(“Attempt to access invalid product #{params[:id]}”)
flash[:notice] = “There is no such product”
redirect_to :action => :index
else
@list = find_list
@current_item= @list.add_product (@product )
redirect_to_index unless request.xhr?
end
end
def checkout
@list = find_list
if @list.items.empty ?
redirect_to_index(“Your list is empty”)
else
@list = List.new
end
end
def empty_list
session[:list] =nil
redirect_to_index
end
abon
January 12, 2007, 11:34am
4
def checkout
@list = find_list
if @list.items.empty ?
redirect_to_index(“Your list is empty”)
else
@list = List.new
end
end
My guess is that find_list is returning nil and you’re getting an error
when you call @list.items . If this is not it then I’ll need more
information - do you have a stack trace?
abon
January 13, 2007, 7:19am
5
Do you mean this?
Yes, that’s exactly what I meant.
The line of code in rails that is causing the problem is this:
if @attributes.include?(method_name) or
in ActiveRecord::Base
This indicates that some how the @attributes instance variable has been
set to nil in one of your models. Are you directly using an instance
variable with this name in one of your models?
abon
January 13, 2007, 7:03am
6
Snowman wrote:
def checkout
@list = find_list
if @list.items.empty ?
redirect_to_index(“Your list is empty”)
else
@list = List.new
end
end
My guess is that find_list is returning nil and you’re getting an error
when you call @list.items . If this is not it then I’ll need more
information - do you have a stack trace?
Do you mean this?
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.include?
Extracted source (around line #12 ):
9: <% form_for :list, :url => { :action => :save_list } do |form| %>
10:
11: 皜?迂:
12:
13:
14:
15:
RAILS_ROOT: C:/INSTAN~1/rails_apps/test/config/…
Application Trace | Framework Trace | Full Trace
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1772:in
method_missing' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
value_before_type_cast' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:253:in
to_input_field_tag’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:160:in
text_field' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
text_field' #{RAILS_ROOT}/app/views/admin/checkout.rhtml:12:in
_run_rhtml_admin_checkout’
#{RAILS_ROOT}/app/views/admin/checkout.rhtml:9:in
_run_rhtml_admin_checkout' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1772:in
method_missing’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
send' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
value_before_type_cast’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:253:in
to_input_field_tag' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:160:in
text_field’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
send' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
text_field’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:149:in
fields_for' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:127:in
form_for’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:316:in
send' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:316:in
compile_and_render_template’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:292:in
render_template' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:251:in
render_file’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:726:in
render_file' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:648:in
render_with_no_layout’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/layout.rb:245:in
render_without_benchmark' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:53:in
render’
C:/INSTAN~1/ruby/lib/ruby/1.8/benchmark.rb:293:in measure' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:53:in
render’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:942:in
perform_action_without_filters' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.rb:368:in
perform_action_without_benchmark’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue' C:/INSTAN~1/ruby/lib/ruby/1.8/benchmark.rb:293:in
measure’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/rescue.rb:82:in
perform_action’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:408:in
send' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:408:in
process_without_filters’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.rb:377:in
process_without_session_management_support' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/session_management.rb:117:in
process’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in
dispatch' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel/rails.rb:73:in
process’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:551:in
process_client' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:550:in
each’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:550:in
process_client' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
initialize' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
new’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
initialize’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
new' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:956:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:955:in
each’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:955:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/bin/mongrel_rails:127:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel/command.rb:199:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/bin/mongrel_rails:235 C:/INSTAN~1/ruby/bin/mongrel_rails:18:in
load’
C:/INSTAN~1/ruby/bin/mongrel_rails:18
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1772:in
method_missing' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:341:in
value_before_type_cast' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:253:in
to_input_field_tag’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:160:in
text_field' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:395:in
text_field' #{RAILS_ROOT}/app/views/admin/checkout.rhtml:12:in
_run_rhtml_admin_checkout’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:149:in
fields_for' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/helpers/form_helper.rb:127:in
form_for’
#{RAILS_ROOT}/app/views/admin/checkout.rhtml:9:in
_run_rhtml_admin_checkout' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:316:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:316:in
compile_and_render_template' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:292:in
render_template’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_view/base.rb:251:in
render_file' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:726:in
render_file’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:648:in
render_with_no_layout' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/layout.rb:245:in
render_without_benchmark’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:53:in
render' C:/INSTAN~1/ruby/lib/ruby/1.8/benchmark.rb:293:in
measure’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:53:in
render' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:942:in
perform_action_without_filters’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.rb:368:in
perform_action_without_benchmark' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue’
C:/INSTAN~1/ruby/lib/ruby/1.8/benchmark.rb:293:in measure' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/benchmarking.rb:69:in
perform_action_without_rescue’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/rescue.rb:82:in
perform_action' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:408:in
send’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/base.rb:408:in
process_without_filters' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/filters.rb:377:in
process_without_session_management_support’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/session_management.rb:117:in
process' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/dispatcher.rb:38:in
dispatch’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel/rails.rb:73:in
process' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:551:in
process_client’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:550:in
each' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:550:in
process_client’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
initialize’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
new' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:636:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
initialize' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
new’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:625:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:956:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:955:in
each' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel.rb:955:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/bin/mongrel_rails:127:in
run' C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/lib/mongrel/command.rb:199:in
run’
C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.13.3-mswin32/bin/mongrel_rails:235
C:/INSTAN~1/ruby/bin/mongrel_rails:18:in `load’
C:/INSTAN~1/ruby/bin/mongrel_rails:18
Request
Parameters: None
Show session dump
:user_id: 1
:list: !ruby/object:List
items:
!ruby/object:ListItem
product: !ruby/object:Product
attributes:
popular_score:
title: !binary |
5LiJ6YOO6aSQ5YyF
nickname:
primary_price: "30"
primary_link: http://tw.yahoo.com
id: "1"
image_url1: http://pandora.com/images/logo_pandora.gif
description: !binary |
6auY6ZuE5ZCN55Si
user_id: "4"
created_at: 0000-00-00 00:00:00
browse_times:
quantity: 1
!ruby/object:ListItem
product: !ruby/object:Product
attributes:
popular_score:
title: Chanel patent- leather high- heels
nickname:
primary_price: “500”
primary_link: http://www.highheelshoemuseum.com/
id: “3”
image_url1:
http://ec3.images-amazon.com/images/P/B000H6QZLA.01-A242Z34VYGHM9W._AA280_SCLZZZZZZZ_V62233886_.jpg
description: bold red and patent red are this season’s must-buy
user_id: “4”
created_at: 0000-00-00 00:00:00
browse_times:
quantity: 1
!ruby/object:ListItem
product: !ruby/object:Product
attributes:
popular_score:
title: “\xE5\xB9\xB3\xE5\xBA\x95\xE5\x9C\x93\xE9
\xAD\xE8\x8A\xAD\xE8\x95\xBE\xE9\x9E\x8B”
nickname:
primary_price: “690”
primary_link: http://tw.page.bid.yahoo.com/tw/auction/1148041732
id: “4”
image_url1:
http://tw.image.bid.yahoo.com/users/4/8/1/3/titi811019-img600x300-1162618416nn21-4.jpg
description:
"\xE4\xB8\x80\xE7\x9B\xB4\xE5\xBE\x88\xE6\x83\xB3\xE5?\x9A\xE5\x83?French
Sole. London
Sole\xE9\x82\xA3\xE6\xA8\xA3\xE7\x9A\x84\xE8\x8A\xAD\xE8\x95\xBE\xE9\x9E\x8B\xE6\xAC\xBE!\r\n
\xE7\xB1\x8C\xE5\x82\x99\xE5\xBE\x88\xE4\xB9\x85\xE7\xB5\x82\xE6\x96\xBC\xE4\xB8\x8A\xE6\x9E\xB6\xE5\x9B\x89^^\r\n
\xE9\x9E\x8B\xE5\xBA\x95\xE7\x89\xB9\xE5\x88\xA5\xE4\xBD\xBF\xE7\x94\xA8\xE9\x98\xB2\xE6\xBB\x91\xE7\x9A\x84\xE6\xA9\xA1\xE8\x86
\xE5\xBA\x95~\r\n
\xE5\x8A
\xE4\xB8\x8A\xE5\x8E\x9A\xE5\x8E\x9A\xE7\x9A\x84\xE6\xB0\xA3\xE5\xA2\x8A\xE9\x9E\x8B\xE5\xBA\x95~\r\n
\xE7\xA9\xBF\xE8\xB5\xB7\xE4\xBE\x86\xE5\x83?\xE9?\x8B\xE5\x8B\x95\xE9\x9E\x8B\xE4\xB8\x80\xE6\xA8\xA3\xE8\x88\x92\xE6\x9C?\xE5\x96\x94!\r\n
\r\n
\xE6\xAF?\xE9\x9B\x99\xE9\x83\xBD\xE6?\xAD\xE9\x85?\xE4\xB8?\xE5?\x8C\xE7\x9A\x84\xE8?\xB4\xE8?\xB6\xE7\xB5?\xE5\x92\x8C\xE8\xBB\x8A\xE9\x82\x8A.\xE8\xB6\x85\xE7\xB4\x9A\xE5?\xAF\xE6\x84\x9B\xE5\x96\x94!\r\n
\xE6\x8E\xA8\xE5\x87\xBA\xE7\xA7\x8B\xE5\x86\xAC\xE6\x96\xB0\xE8\x89\xB2!\xE6\xBC\x86\xE7\x9A\xAE\xE6\xAC\xBE!\xE8\xB1?\xE5\xAF\x8C\xE7\x9A\x84\xE7\xB3\x96\xE6\x9E\x9C\xE8\x89\xB2\xE5\xBD\xA9!\xE7\x9C\x8B\xE4\xBA\x86\xE5\xB0\xB1\xE8\xB6\x85\xE7\xB4\x9A\xE5\x96\x9C\xE6\xAD\xA1^^\r\n
\xE6\x96\xB0\xE5\xA2\x9E\xE5\xA4\xA7\xE5\xB0\xBA\xE7\xA2\xBC43~45!\xE6\x95\xB8\xE9\x87?\xE4\xB8?\xE5\xA4\x9A\xE5\x96\x9C\xE6\xAD\xA1\xE8\xA6?\xE6\x8A\x8A\xE6?\xA1\xE5\x96\x94^^
"
user_id: “4”
created_at: 0000-00-00 00:00:00
browse_times:
quantity: 1
!ruby/object:ListItem
product: !ruby/object:Product
attributes:
popular_score:
title: “ZARA
\xE7\xB7\x9E\xE5\xB8\xB6\xE5\x84\xAA\xE9\x9B\x85\xE6\xAC\xBE\xE5\x9C\x93\xE9\xA0\xAD\xE5\xB9\xB3\xE5\xBA\x95\xE9\x9E\x8B”
nickname:
primary_price: “3450”
primary_link: http://tw.page.bid.yahoo.com/tw/auction/1148216341
id: “5”
image_url1:
http://tw.image.bid.yahoo.com/users/0/3/2/9/princesskkk313-img480x360-11663084155-10.jpg
description: "ZARA
\xE8\xA5\xBF\xE7\x8F\xAD\xE7\x89\x99\xE6\x9C\x8D\xE9\xA3\xBE\r\n
\r\n
\xE9\xA6\x99\xE5\xA5\x88\xE5\x85\x92\xE6\x9C\x89\xE4\xB8\x80\xE6\xAC\xBE\xE8\xB6\x85\xE5\x83\x8F\xE9\x80\x99\xE5\x80\x8B\xE7\x9A\x84\r\n
\r\n
\xE5\xBE\x88\xE5\x84\xAA\xE9\x9B\x85\xE7\x9A\x84\xE4\xB8\x80\xE6\xAC\xBE\xE7\xA9\xBF\xE8\xB5\xB7\xE4\xBE\x86\xE5\xBE\x88\xE6\x9C\x89\xE6\xB0\xA3\xE8\xB3\xAA\xE6\xAD\x90
^O^\r\n
\r\n
\xE6\x90\xAD\xE9\x85\x8D\xE6\x88\x91\xE9\x85\x8D\xE6\x88\x91\xE8\xB3\xA3\xE5\xA0\xB4\xE7\x9A\x84\xE9\xA6\x99\xE5\xA5\x88\xE5\x85\x92\xE5\x8C\x85\xE8\xB6\x85\xE5\xA5\xBD\xE7\x9C\x8B\xE7\x9A\x84\xEF\xBC\x81\xEF\xBC\x81
\r\n
\r\n
\xE5\x89\x9B\xE4\xB8\x8A\xE5\xB8\x82\xE5\xB0\xB1\xE8\xA2\xAB\xE6\x90\xB6\xE8\xB3\xBC\xE4\xB8\x80\xE7\xA9\xBA\xE4\xBA\x86!\r\n
\r\n
\xE4\xB8\x8D\xE7\xA2\xBA\xE5\xAE\x9A\xE9\x82\x84\xE6\x9C\x89\xE6\xB2\x92\xE6\x9C\x89\xE8\xB2\xA8\xE5\xA6\x82\xE6\x9E\x9C\xE8\xA6\x81\xE7\x9A\x84\xE8\xA9\xB1\xE5\x85\x88\xE8\xB7\x9F\xE5\x87\xB1\xE8\xA5\xBF\xE8\xAA\xAA\xE6\x88\x91\xE6\x89\xBE\xE5\x88\xB0\xE5\x9C\xA8\xE4\xB8\x8B\xE6\xA8\x99\xE6\xAD\x90!
\r\n
\r\n \r\n
\r\n
\xE7\x9B\xAE\xE5\x89\x8D\xE6\x9C\x89\xE8\xB3\xBC\xE8\xB2\xB7\xE8\xB5\xB7\xE4\xBE\x86\xE7\x9A\x84\xE6\x9C\x89
36 \xE8\x99\x9F\xEF\xBC\x81\r\n
\r\n
\xE8\xB3\xA3\xE5\xA0\xB4\xE9\x82\x84\xE6\x9C\x89\xE7\xB1\xB3\xE8\x89\xB2\xE7\x9A\x84\xE4\xB9\x9F\xE8\xB3\xA3\xE7\x9A\x84\xE8\xB6\x85\xE7\xB4\x9A\xE5\xA5\xBD\xE4\xBA\x86\xEF\xBC\x81\xEF\xBC\x81
"
user_id: “1”
created_at: 0000-00-00 00:00:00
browse_times:
quantity: 1
flash: !map:ActionController::Flash::FlashHash {}
Thanks
abon
January 13, 2007, 9:18am
7
Snow Man wrote:
Do you mean this?
Yes, that’s exactly what I meant.
The line of code in rails that is causing the problem is this:
if @attributes.include?(method_name) or
in ActiveRecord::Base
This indicates that some how the @attributes instance variable has been
set to nil in one of your models. Are you directly using an instance
variable with this name in one of your models?
I ended up finding out that I’m mistaking line_item.rb with
cart_item.rb.
I followed the book again. But this time I got an application error
which is almost clueless.T T
It’s really hard to figure out what’s going wrong.
abon
January 13, 2007, 9:44am
8
Abon wrote:
Snow Man wrote:
Do you mean this?
Yes, that’s exactly what I meant.
The line of code in rails that is causing the problem is this:
if @attributes.include?(method_name) or
in ActiveRecord::Base
This indicates that some how the @attributes instance variable has been
set to nil in one of your models. Are you directly using an instance
variable with this name in one of your models?
I ended up finding out that I’m mistaking line_item.rb with
cart_item.rb.
I followed the book again. But this time I got an application error
which is almost clueless.T T
It’s really hard to figure out what’s going wrong.
There is what I digged out from my development.log
Session contains objects whose class definition isn’t available.
Remember to require the classes for all objects kept in the session.
(Original exception: uninitialized constant ListItem [NameError])
abon
January 13, 2007, 7:08am
9
And I also changed
def checkout
@list = find_list
puts @list.inspect
if @list.items.empty ?
redirect_to_index(“Your list is empty”)
else
@list = List.new
end
end
in the server log
the @list contains list item which is definitely not empty.
It shows like this
#<List:0x46cee3c @items=[#<ListItem:0x46cedd8 @quantity=1,
@product=#<Product:0x46ced60 @attributes={“popular_score”=>nil, “t
in Alta velvet knee high boots - NET-A-PORTER.COM ”, “nickname”=>nil,
“primary_price”=>“49343”, “primary_link”=>“http://www.ne
983”, “id”=>“29”,
“image_url1”=>“http://www.net-a-porter.com/intl/images/product/15983/large/index.jpg ”,
“description”=>“Blac
with 110mm silver Swarovski rhinestone encrusted heel. Christian
Louboutin boots have a pointed toe, a zip fastening on inner
sole.”, “user_id”=>“1”, “created_at”=>“2007-01-12 17:50:51”,
“browse_times”=>nil}>>, #<ListItem:0x46ce7d4 @quantity=1, @produ
ttributes={“popular_score”=>nil, “title”=>“Christian Louboutin - Raffia
Slingback - Neiman Marcus”, “nickname”=>nil, “prima
ary_link”=>“http://www.neimanmarcus.com/store/catalog/prod.jhtml?itemId=prod35000031&parentId=cat5130731&masterId=cat000199&i
000141cat000149cat000199cat5130731”, “id”=>“35”,
“image_url1”=>“http://www.neimanmarcus.com/products/mn/NMX0174_mn.jpg ”,
"des
Brown raffia.\r\n\342\200\242 Tonal leather piping.\r\n\342\200\242 Peep
toe.\r\n\342\200\242 Elastic-back slingback.\r\n\342
\n\342\200\242 4 4/5" heel.\r\n\342\200\242 Signature red
sole.\r\n\342\200\242 Made in Italy. ", “user_id”=>“1”, "created_a
, “browse_times”=>nil}>>]>