2011-08-25 56 views
0

我是Ruby的新品牌,剛剛觸及到關聯。這裏是我的模型:Rails 3:與結合的NameError

class Subject < ActiveRecord::Base 

    has_many :pages 

    scope :visible, where(:visible => true) 
    scope :invisible, where(:visible => false) 
    scope :search, lambda {|query| where(["name LIKE ?", "%#{query}%"])} 
end 

class Page < ActiveRecord::Base 

    belongs_to :subject 
    has_many :sections 
    has_and_belongs_to_many :editors, :class_name => "AdminUser" 

end 

我的教程(PSH ..這是什麼知道)告訴我鍵入 「subject.pages」,找到的第一個主題後,像這樣:

Loading development environment (Rails 3.0.10) 
irb(main):001:0> Subject.find(1) 
=> #<Subject id: 1, name: "Initial Subject", position: 1, visible: true, created 
_at: "2010-09-29 20:51:09", updated_at: "2010-09-29 21:07:42"> 
irb(main):002:0> subject.pages 
NameError: undefined local variable or method `subject' for main:Object 
     from (irb):2 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma 
nds/console.rb:44:in `start' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma 
nds/console.rb:8:in `start' 
     from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.10/lib/rails/comma 
nds.rb:23:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 
irb(main):003:0> 

根據到教程中,它應該返回一個空數組。我已經搜索了谷歌,這個網站,雅虎的答案,到處尋找可能的解釋。一切似乎都對我來說是正確的。誰能幫忙?

+0

如果你是Ruby的新手,你應該在嘗試Rails,IMO之前鑽研Ruby。 – jtbandes

回答

4

您需要的Subject.find(1)結果存儲到一個變量在使用它之前,就像你用任何語言:

subject = Subject.find(1)

然後,你可以做subject.pages。否則subject不涉及任何內容。

或者,您可以使用_來引用最後一個表達式的返回值。所以你可以輸入Subject.find(1)然後_.pages

如果你是新來的Ruby,不過,我建議要通過this也許this教程,如果你覺得勇敢,this guide