2012-11-01 63 views
0

我試圖運行這樣的代碼:在if聲明紅寶石 - 未定義的局部變量或方法

class Run_Fiction_Generator < Fiction_Generator 
    def generate_story 
    puts "Title: \"#{generator.title} #{generator.random_date}\"" 
    puts "---------" 
    puts generator.story 
    end 
end 

prompt = '>' 

puts "Hello Welcome to Fiction Generator" 
puts "First a little about me: " 
puts "" 

generator = Run_Fiction_Generator.new 

puts "This amazing Fiction Generator was created by: #{generator.created_by}" 
puts "He's a student with ID number: #{generator.student_id} " 
puts "" 
puts "Okay now your story! Enter '1' if you want to generate a story now, or '2' if you don't want to" 
print prompt 
answer = gets.chomp 

if answer == "1" 
    generate_story 
else 
    puts "It was nice meeting you, catch ya later!" 
end 

但該方法generator_story不斷拋出此錯誤:

undefined local variable or method 'generate_story' for main:Object (NameError)

我m的印象是我已經在我的代碼中定義了方法。任何人都可以告訴我哪裏出了問題?

回答

6

generate_storyRun_Fiction_Generator的方法和它應該被稱爲是這樣的:

generator.generate_story 
+0

嗨detunized,我試過你的建議,但它仍然沒有奏效。現在錯誤已經被引發到了generator_story方法「generator_story:undefined local variable或method'generator'for #Run_Fiction_Generator。 所以很抱歉成爲一個麻煩,但我是一個noob,現在我承受着嚴重的壓力。花了我幾周的時間纔得到這個,現在我只是沮喪 – muyiwamat

+1

@muyiwamat,你不應該在'Run_Fiction_Generator'方法裏面使用'generator.' generator'是在類之外定義的局部變量。確定你在做什麼,請先閱讀一本關於Ruby的書,並獲得基礎知識 – detunized

+0

我有同樣的問題,我做了同樣的我實例化類,並調用方法使用對象..它的工作...我是Ruby的新來自Java ...調用一個像這樣的本地方法有點冗長......我想.. – sarmahdi

1

你的另一個問題是,你是如何訪問產生的故事方法內部的變量和方法。 BTW

class Run_Fiction_Generator < Fiction_Generator 
    def random_date 
    "10/20/2012" 
    end 

    def title 
    "Spooky, Late Halloween Story" 
    end 

    def generate_story 
    puts "Title: \"#{title} #{random_date}\"" 
    puts "---------" 
    puts @story 
    end 
end 
+0

嗨,感謝您的回覆。title和random_date實際上是從anot繼承的函數她的班級。所以他們不是我在這個特定代碼中創建的完全變量。 – muyiwamat

+0

Ok編輯相應。如果title和random_date是實例方法並且名爲@story的實例變量,那麼該代碼將起作用。 –

+0

所以你說我可以創建繼承函數的實例變量?我會試一試。我只是不確定它會這樣工作,因爲我將不得不創建繼承類的對象並將其稱爲它的函數謝謝 – muyiwamat

0

:試試這個類名是類名 「錯誤」

使用首字母大寫,而不是「_分離。

相關問題