小規模なプロジェクトでは、個々のプレーヤーの勝利率に応じて勝つためにリーグオブリージェンツでチームの確率を返すためにレールでアプリケーションを開発しようとしていました。私はRiot APIとやりとりしており、召喚者とチャンピオンとの勝利確率を返すことができます。私は、チームが入力したすべての選手の勝率(チャンピオン確率)を加算して平均を返す方法を考えました。RailsとRiot APIとの相互作用チームの確率の平均を返す
はここ
class Tteam < ActiveRecord::Base
require 'riotsecondapi'
before_save :downcase_players
before_save :mod_champ_save
def self.return_id(name)
api = RiotApi.new
info = api.get_summoner_id(name)
info[name]["id"]
end
def self.return_summoner_champion_list(summoner_name)
id = return_id(summoner_name)
api = RiotApi.new
full_stat = api.get_full_stats(id)
full_stat["champions"]
end
def self.get_champion_id(champ_name)
api = RiotApi.new
champs = api.get_champion
champs["data"][champ_name]
end
def self.determine_champion_probability(summoner_name, champ_name)
champion_ids = return_summoner_champion_list(summoner_name).collect{|player| player["id"]}
desired_champ_id = get_champion_id(champ_name)
winrate = 0.0
if champion_ids.include?(desired_champ_id)
hash = Hash[champion_ids.map.with_index.to_a]
champ_array_location = hash[desired_champ_id]
player_stat = return_summoner_champion_list(summoner_name)[champ_array_location]["stats"]
total_played = player_stat["totalSessionsPlayed"]
total_won = player_stat["totalSessionsWon"]
winrate = (total_won.to_f/total_played.to_f)
winrate.round(2) * 100
else
winrate = 0.5 * 100
end
end
def self.team_probability
team_winrate = determine_champion_probability(p1,c1) + determine_champion_probability(p2, c2), + determine_champion_probability(p3, c3)
team_winrate
end
私の方法のteam_probabilityは「#のために未定義のローカル変数やメソッド `P1' 」エラーを返す続けます(私は方法を構築しようとしています)私のTteamモデルです。だから私は、これらの変数を使用することはここではうまくいかないと推測しています。ここで
は私の私のTteamコントローラ
class TteamsController < ApplicationController
def index
end
def show
@tteam = Tteam.find(params[:id])
end
def create
@tteam = Tteam.new(tteams_params)
@tteam.save
redirect_to @tteam
end
private
def tteams_params
params.require(:tteam).permit(:p1, :p2, :p3, :c1, :c2, :c3)
end
end
と私のチームのためのショーのビュー(これはHAMLである)
Team1
%p
In any given ranked game, the probability of
%b= @tteam.p1
winning with
%b= @tteam.c1
is
= Tteam.determine_champion_probability(@tteam.p1, @tteam.c1)
%
%p
In any given ranked game, the probability of
%b= @tteam.p2
winning with
%b= @tteam.c2
is
= Tteam.determine_champion_probability(@tteam.p2, @tteam.c2)
%
%p
In any given ranked game, the probability of
%b= @tteam.p3
winning with
%b= @tteam.c3
is
= Tteam.determine_champion_probability(@tteam.p3, @tteam.c3)
%
%p
Your team's overall probability of winning is...
= Tteam.team_probability
%
ビューの終わりに、私はteam_probabilityを呼び出すしようとしていますですクラスのメソッドchampion_probabilityの合計を現在返します。誰かがこの未定義のローカル変数のエラーをどのように修正できるかについてのアイデアがあれば大きな助けになります。ありがとうございました。