1
abstract (1.0.0)
actionmailer (3.2.2, 3.0.10, 3.0.5, 3.0.3, 2.3.5, 2.1.0)
actionpack (3.2.2, 3.0.10, 3.0.5, 3.0.3, 3.0.0.beta3, 2.3.5, 2.1.0)
activemodel (3.2.2, 3.0.10, 3.0.5, 3.0.3, 3.0.0.beta3)
activerecord (3.0.10)
activeresource (3.2.2, 3.0.10, 3.0.5, 3.0.3, 2.3.5, 2.1.0)
activesupport (3.2.2, 3.0.10, 3.0.5, 3.0.3, 3.0.0.beta3, 2.3.5, 2.1.0)
arel (3.0.2, 2.0.10, 2.0.6)
bcrypt-ruby (3.0.1, 2.1.2)
bson (1.1.5)
bson_ext (1.1.5)
builder (3.0.0, 2.1.2)
bundle (0.0.1)
bundler (1.1.3, 1.1.1, 1.1.0)
cancan (1.6.7, 1.4.1)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.3.1, 1.2.0)
devise (2.0.4, 1.5.3, 1.1.5)
erubis (2.7.0, 2.6.6)
execjs (1.3.0)
hike (1.2.1)
i18n (0.6.0, 0.5.0, 0.3.7)
journey (1.0.3)
jquery-rails (2.0.2, 2.0.1)
jquery_datepicker (0.3.4)
json (1.6.6, 1.6.5)
libv8 (3.3.10.4 x86-linux)
mail (2.4.4, 2.2.19, 2.2.12, 2.2.7)
memcache-client (1.8.5)
mime-types (1.18, 1.17.2, 1.16)
mongo (1.1.5)
mongoid (2.0.0.beta.20)
multi_json (1.2.0)
mysql2 (0.3.11)
nifty-generators (0.4.2)
orm_adapter (0.0.7)
polyglot (0.3.3, 0.3.1)
rack (1.4.1, 1.2.5, 1.2.1, 1.1.3, 1.0.1)
rack-cache (1.2)
rack-mount (0.6.14, 0.6.13)
rack-ssl (1.3.2)
rack-test (0.6.1, 0.5.7, 0.5.6)
rails (3.0.10)
railties (3.2.2, 3.0.10, 3.0.5, 3.0.3)
rake (0.9.2.2, 0.8.7)
rdoc (3.12)
rolify (3.1.0)
sass (3.1.15)
sass-rails (3.2.5)
sprockets (2.1.2)
sqlite3 (1.3.5)
therubyracer (0.9.10)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10, 1.4.9)
tzinfo (0.3.33, 0.3.32, 0.3.23)
uglifier (1.2.4)
warden (1.1.1, 1.0.3)
will_paginate (3.0.3, 3.0.pre2)

上記は宝石リストです..

各タスク内に定義されたサブタスクを持つ基本的な todo を維持していますが、コマンドtask=Todo.tasks.newはメソッドエラーになりません

amrit@PC148881:~/mytodos$ rails console
Loading development environment (Rails 3.0.10)
1.9.2-p290 :001 > todo=todo.first
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.first
    from (irb):1
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.2-p290 :002 > todo=Todo.first
 => #<Todo id: 1, name: "Office", description: "work to be completed at office", created_at: "2012-04-17 08:53:35", updated_at: "2012-04-17 08:53:35"> 
1.9.2-p290 :003 > task=Todo.tasks.new
NoMethodError: undefined method `tasks' for #<Class:0xae32588>
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/activerecord-3.0.10/lib/active_record/base.rb:1014:in `method_missing'
    from (irb):3
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.2-p290 :004 > ^C
1.9.2-p290 :004 > t=Task.new
 => #<Task id: nil, description: nil, due_date: nil, due_time: nil, completed: nil, todo_id: nil, created_at: nil, updated_at: nil> 
1.9.2-p290 :005 > t.description="meeting"
 => "meeting" 
1.9.2-p290 :006 > t.save
 => true 
1.9.2-p290 :007 > task=Todo.tasks.new
NoMethodError: undefined method `tasks' for #<Class:0xae32588>
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/activerecord-3.0.10/lib/active_record/base.rb:1014:in `method_missing'
    from (irb):7
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
    from /home/amrit/.rvm/gems/ruby-1.9.2-p290@1.9.2/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
1.9.2-p290 :008 > 
4

3 に答える 3

1

tasksインスタンスではなくクラスを意図せずに呼び出している可能性があります。代わりにこれを試してください:

task=todo.tasks.new
于 2012-04-17T04:40:07.813 に答える
0

ありがとうございます !!t=Todo.new t=Todo.tasks.new 代わりに : t=Todo.new x=t.tasks.

于 2012-08-08T10:52:08.320 に答える
0

これはあなたがしている単純なタイプミスのようです

todo=todo.first、しかし、2番目は何todoですか?あなたはそれを定義していないようです。あなたの2番目の例では

todo=Todo.first

大文字の「T」で行う2番目の例を確認してください。それを修正してみてください。または、試すことができます

todo = Todo.all.first

(TodoというARモデルがあると仮定)

于 2012-04-17T05:58:34.100 に答える