【发布时间】:2015-03-02 17:06:19
【问题描述】:
我试图了解为什么会出现此错误,我怀疑这是因为我的 Controller 类和 View 类位于两个单独的 Ruby 文件中。有人告诉我,使用 require_relative 'filename' 应该将一个文件中的所有代码引用到另一个文件中,但我似乎遗漏了一些东西。好了,到此为止,
在 controller.rb 文件中,我有
require_relative 'view'
require_relative 'deck_model'
require_relative 'flashcard_model'
class Controller
def initialize
@deckofcards = Deck.new
@welcome = View.new.welcome
@player_guess = View.new.get_user_guess
@success_view = View.new.success
@failure_view = View.new.failure
end
def run
#Logic to run the game
# @current_card
# @user_guess
puts "Let's see if this prints"
# pull_card_from_deck
end
end
在我的 view.rb 文件中,我有,
require_relative 'controller'
class View
attr_accessor :userguess
def initialize (userguess = " ")
@userguess = userguess
end
def welcome
system ("clear")
puts "Welcome! Let's play a game."
puts "I'll give you a definition and you have to give me the term"
puts "Ready..."
end
def get_user_guess
@userguess = gets.chomp.downcase
end
def success
puts "Excellent! You got it."
end
def failure
puts "No, that's not quite right."
end
end
但是,当我运行 controller.rb 时,我收到以下错误,
/Users/sean/Projects/flash/source/controller.rb:11:in `initialize': uninitialized constant Controller::View (NameError)
from /Users/sean/Projects/flash/source/controller.rb:51:in `new'
from /Users/sean/Projects/flash/source/controller.rb:51:in `<top (required)>'
from /Users/sean/Projects/flash/source/view.rb:1:in `require_relative'
from /Users/sean/Projects/flash/source/view.rb:1:in `<top (required)>'
from controller.rb:1:in `require_relative'
from controller.rb:1:in `<main>'
谁能帮我解决这个问题。
【问题讨论】:
-
您发布的回溯表明错误发生在
/Users/sean/Projects/flash/source/controller.rb:51的第 51 行,但您发布的文件要短得多。请发布您的整个代码以及您用于运行它的确切命令。 -
+1 到@DavidGrayson。我也会删除
require_relative 'controller',因为您的View类不使用任何Controller代码。