IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Différenciation de deux id!


Sujet :

Ruby on Rails

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Différenciation de deux id!
    Bonjour,

    Suite à mon précédent problème, j'ai finalement trouvé dans la doc comment associer des id provenant de différentes tables afin de pouvoir afficher les noms leur correspondant dans ma vue.

    Je rencontre par contre un problème dans mon affichage.

    Si j'ai admettons l'id 1 qui correspond à toto, et l'id 2 a tata, lorsque je fais mon association dans ma vue avec <%= game.sport.name %>, je souhaiterais pouvoir avoir toto VS tata dans ma vue affichée.
    Hors si je fais cela j’obtiens toto VS toto alors que dans la base de donnée les 2 id sont différents.

    Comment dois-je procéder pour différencier les 2 ?

    Voici le formulaire que j'utilise :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <div class="control-group">
          <%= f.label :team_a, :class => "control-group" %>
          <div class="controls">
            <%= collection_select(:game, :school_id, School.all, :id, :name, {}, {}) %>
          </div>
            <%= f.label :team_b, :class => "control-group" %>
          <div class="controls">
            <%= collection_select(:game, :school_b_id, School.all, :id, :name, {}, {}) %>
          </div>
     
          <div class="controls">
            <%= collection_select(:game, :sport_id, Sport.all, :id, :name, {}, {}) %>
          </div>
          <div class="controls">
            <%= collection_select(:game, :user_id, User.all, :id, :name, {}, {}) %>
          </div>
      </div>

    Mon problème vient du fait que game.school.name est rattaché à school_id, comment faire pour que school_b_id soit pris en compte ?
    Cordialement.

  2. #2
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    Juin 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : Juin 2013
    Messages : 138
    Points : 231
    Points
    231
    Par défaut
    Bonjour,
    encore une fois le code le plus intéressant n'est pas dans la vue mais dans le contrôleur, et en fonction du modèle que tu as choisi

    Je pense que la table GAME contient
    * infos du match : date, heure, score...
    * team_a_id, team_b_id (c'est un ID de school)
    * sport_id

    mais très vite tu vas te retrouver à faire des algos bizarres à base de "en tant que team A et en tant que team B".
    Par exemple pour faire la somme des scores, ou la liste des victoires,
    soit tu as une super règle (le A est toujours gagnant et un match nul est interdit), soit tu auras du code pas super beau.

    Pour te faciliter les futures requêtes, je vois plutôt un schéma genre
    - School [name]
    - Teams [name]
    - Game [datetime, sport_id, notes]
    - Score [team_id, points, booléen victory]

    - School Has Many Teams
    - Team Has Many Games
    - School Has Many Games Through Teams
    - Game Has Many Scores (en fait il y aura toujours deux Scores par Game)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Oui le code le plus intéressant est dans le contrôleur, certes mais la je travaille sur l'affichage des donnée dans ma vue. De plus je n'ai pas de table team comme tu l'indique en bas de ton poste, en fait les teams c'est le nom des écoles.

    De plus le site ne va pas avoir de fonction complexe, je génère moi même les matchs car ceux ci sont déjà définît a l'avance.

    J'ai juste besoin de listé mais match pour sport et d'avoir un page sur laquelle je rentre les scores. et enfin un tableau de classement par sport.

    Jusque la mise a part pour l'affichage des noms dans ma vue je n'ai pas d'autre soucis (pour l'instant).

  4. #4
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    Juin 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : Juin 2013
    Messages : 138
    Points : 231
    Points
    231
    Par défaut
    J'essaie de relire mais je ne comprends pas.
    Si tu veux le nom d'un sport, tu veux le nom d'un sport

    Si tu veux le nom d'une rencontre, je pense que tu voudras
    dans la vue
    <%= "#{@game.school.name} VS #{@game.school_b.name}" %>
    et plus probablement dans le modèle
    def game_name
    [self.school.try(:name), self.school_b.try(:name)].compact.join(' vs ')
    end


    Si tu veux customiser le nom, le helper collection_select ne va plus te suffire.
    Tu seras obligé de passer par select et collection_for_select je pense.

    La doc te propose dès le début un exemple, que tu peux modifier comme ça (ça se base sur le game_name que je te montre ci-dessus)
    select("game", "sport_id", Game.all.collect {|g| [ g.game_name, g.sport_id ] }, {include_blank: 'None'})
    ^ tu permets aux gens de VOIR "game_name" mais au select, techniquement de garder l'id du sport,
    même si une fois encore je trouve ça bizarre.

  5. #5
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    Juin 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : Juin 2013
    Messages : 138
    Points : 231
    Points
    231

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    je ne devais pas etre dans mon assiette hier, j ai recréé un projet vierge et j ai essayé de résoudre mon problème. Et j y suis parvenu et modifiant mais relation entre mes tables.

    Maintenant il ne reste plus qu a mettre ca dans le projet existant.

Discussions similaires

  1. Differencier deux dates dans un même tableau
    Par sarmerou08 dans le forum Débuter
    Réponses: 3
    Dernier message: 15/01/2010, 15h23
  2. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  3. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  4. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57
  5. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo