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 (у которого есть attr_accessor для game_loop).
Почему он не регистрируется в версии get '/ blackjack?
http://pastebin.com/6EFpp5gh - Вот версия макета, которую вы можете запустить, чтобы проверить это. Сначала перейдите на localhost: 4567/blackjack, и вы получите внутреннюю служебную ошибку. Перезагрузите сервер, затем перейдите на localhost: 4567 сначала, а затем localhost: 4567/blackjack afterward, и вы увидите, что он работает.
Надеялся, что будет работать, но то же самое. Я перехожу к http: // localhost: 4567/blackjack/вручную и получаю внутреннюю ошибку сервера с тем же, но если я нажму на Blackjack из '/', это сработает. – johnnycodami
Я сделал эту версию макета, которая имеет ту же ошибку: http://pastebin.com/6EFpp5gh запустите ее, затем перейдите прямо к localhost: 4567/blackjack/она получит внутреннюю ошибку сервера, затем перезапустит ее и перейдет на localhost: 4567, а затем на localhost: 4567/blackjack/он не получит эту ошибку. – johnnycodami