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 - Undefined method 'game_loop' for NilClass. が発生します。
ただし、メインページから開始した場合:
get '/' do
session[:bj_game] = false
session[:score] = 0
erb :home
end
ホーム erb から /blackjack へのリンクをクリックすると、new_session_check が変数が false であることを確認し、Blackjack クラス (game_loop の attr_accessor を持つ) の新しいインスタンスを作成したため、機能します。
get '/blackjack' バージョンに登録されないのはなぜですか?
http://pastebin.com/6EFpp5gh - これは、これを確認するために実行できるモックアップ バージョンです。最初に localhost:4567/blackjack にアクセスすると、内部サービス エラーが発生します。サーバーを再起動し、最初に localhost:4567 に移動し、次に localhost:4567/blackjack に移動すると、機能することがわかります。