Ich versuche, eine Anwendung zum Speichern von gespielten FIFA-Spiele zu machen.Mit einer if-Funktion in Controller
Jetzt kann ich schon Accounts machen, Spiele speichern usw. Aber wenn ich ein Spiel in der DB ablege, möchte ich auch den Gewinner und Verlierer des Spiels so speichern, wie ich kann Verwenden Sie später die Zählfunktion, um zu zählen, wie viele Gewinne oder Verluste ein Benutzer hat.
Controller:
class GamesController < ApplicationController
before_action :authenticate_user!, exept: [:index, :show]
def index
@games = Game.all
end
def new
@game = current_user.games.build
@user_options = User.all.map{|u| [ u.user_name, u.id ] }
end
def create
@user_options = User.all.map{|u| [ u.user_name, u.id ] }
@game = Game.new(game_params)
@game.home_team_user_id = current_user.id
if @game.home_score > @game.away_score
@game.winner_id = @game.home_team_user_id
@game.loser_id = @game.away_team_user_id
else if @game.home_score < @game.away_score
@game.winner_id = @game.away_team_user_id
@game.loser_id = @game.home_team_user_id
else
end
if @game.save
redirect_to games_path, :notice => "Successfully added game!"
else
render 'index'
end
end
def show
@games = Game.all
end
def destroy
@game = Game.find(params[:id])
@game.destroy
redirect_to games_path
end
private
def find_game
@game = Game.find(params[:id])
end
def game_params
params.require(:game).permit(:home_team_user_name, :home_score, :away_team_user_name, :away_score, :home_team_user_id, :away_team_user_id, :winner_id, :loser_id)
end
end
end
Ausblick:
<div class="col-md-12" style="text-align:center">
<div class="panel panel-default" style="margin-right:10px">
<div class="panel-heading">
<h3 class="panel-title">Submit New Match</h3>
</div>
<div class="panel-body">
<%= simple_form_for(@game) do |f| %>
<%= f.text_field :home_score, :placeholder => "Your score" %>
<%= f.text_field :away_score, :placeholder => "Your Opponents score" %> <br><br>
<p>Opponent:</p>
<%= f.select(:away_team_user_id, @user_options) %>
<br> <br> <%= f.submit "Submit Match", class: "btn-submit" %>
<% end %>
</div>
</div>
Ist dies der richtige Weg, um diese Berechnung zu machen? Oder haben Sie andere Vorschläge?
Ist dies der richtige Weg, warum dann bekomme ich diese Fehlermeldung, wenn ich versuche, das Formular abschicken:
undefined lokale Variable oder Methode `game_params' für
Wie Sie in der Steuerung sehen können, fehlt die game_params
nicht. Ich habe jedoch am Ende eine end
hinzugefügt, weil dies einen Fehler beim Laden des Formulars gab.
Oh Gott, ich hasse dumme Fehler. Danke vielmals! –
Kein Problem! Das haben wir alle schon durchgemacht. – MTarantini