0
get '/blackjack/*' do
if params[:splat] == "/hit" and defined? session[:bj_game]
erb :blackjack
elsif params[:splat] == "/fold" and defined? session[:bj_game]
session[:bj_hum].fold = true
erb :blackjack
else
if defined? session[:bj_game]
new_session_check
score_check
erb :blackjack
else
session[:bj_game] = false
session[:score] = 0
new_session_check
score_check
erb :blackjack
end
end
end
def new_session_check
if session[:bj_game] == false
session[:bj_hum] = Blackjack.new
session[:bj_com] = Blackjack.new
session[:bj_game] = true
end
end
def score_check
if session[:bj_hum].game_loop == false
if session[:bj_hum].score.to_i > 0
session[:score] += session[:bj_hum].score.to_i
check_save(session[:score])
else
session[:score] = 0
end
session[:bj_game] = false
session[:bj_hum] = Blackjack.new
session[:bj_com] = Blackjack.new
end
end
每当它得到分数检查,我都会得到NoMethodError - 未定义的方法'game_loop'为NilClass。从另一种方法访问会话
但是,如果我从主页开始:
get '/' do
session[:bj_game] = false
session[:score] = 0
erb :home
end
并点击从家里再培训局的链接/酒杯上,它会工作作为new_session_check看到变量是假的,然后创建新Blackjack类的实例(它具有for_g_accessor for game_loop)。
它为什么不在get'/ blackjack'版本中注册?
http://pastebin.com/6EFpp5gh - 以下是您可以运行验证此模型的版本。首先去localhost:4567/blackjack,你会得到一个内部服务错误。重新启动服务器,然后先转到localhost:4567,然后再转到localhost:4567/blackjack,您将看到它的工作原理。
希望这会工作,但同样的事情。我去http:// localhost:4567/blackjack /手动获取内部服务器错误,但是如果从'/'点击Blackjack,它就会起作用。 – johnnycodami
我做了这个样机版本,有相同的错误:http://pastebin.com/6EFpp5gh运行它,然后直接到本地主机:4567/blackjack /它会得到一个内部服务器错误,然后重新启动并进入本地主机: 4567然后到localhost:4567/blackjack /它不会得到那个错误。 – johnnycodami