簡體   English   中英

Ruby on Rails:Rails 3.0.10中沒有方法錯誤

[英]Ruby on Rails: No method error in Rails 3.0.10

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)

以上是寶石清單..

我正在維護一個基本的待辦事項,該待辦事項將在每個任務中定義子任務,但是命令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 > 

您可能無意中調用了Class而不是實例上的tasks 嘗試以下方法:

task=todo.tasks.new

看來這是您正在做的簡單錯字

todo=todo.first ,但是第二個todo什么? 因為您似乎尚未定義它; 在第二個示例中

todo=Todo.first

檢查您使用大寫字母“ T”做的第二個示例,嘗試更正該錯誤,或​​者可以嘗試

todo = Todo.all.first

(假設您有一個名為Todo的AR模型)

謝謝 !! 我得到的答案是我在嘗試創建該實例時創建一個錯誤:t = Todo.new t = Todo.tasks.new而不是:t = Todo.new x = t.tasks。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM