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 :

Récupération d'id dans un hidden field


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 Récupération d'id dans un hidden field
    Bonjour,

    J'ai un formulaire dans lequel je souhaite récupérer l'id du sport sélectionné dans un menu déroulant en utilisant un hidden field. J'ai essayé plusieurs possibilités mais je ne suis pas parvenu à réaliser ce que je souhaite.

    J'ai pour le moment contourné mon problème en rajoutant un menu déroulant qui va inscrire l'id dans ma base.

    Je vous montre le code du formulaire :

    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
    18
    19
    20
    21
    22
    <%= render 'shared/error_messages', :object => f.object %>
      <div class="control-group">
          <%= f.label :team_a, :class => "control-group" %>
          <div class="controls">
            <%= collection_select(:game, :team_a, School.all, :name, :name, {}, {}) %>
          </div>
            <%= f.label :team_b, :class => "control-group" %>
          <div class="controls">
            <%= collection_select(:game, :team_b, School.all, :name, :name, {}, {}) %>
          </div>
          <div class="controls">
            <%= collection_select(:game, :sport_name, Sport.all, :name, :name, {}, {}) %>
          </div>
          <div class="controls">
            <%= collection_select(:game, :sport_id, Sport.all, :id, :name, {}, {}) %>
          </div>
          </div>
          <div class="controls">
            <%= collection_select(:game, :user_id, User.all, :id, :name, {}, {}) %>
          </div>
         <%= f.submit "Ajouter", :class => "btn btn-primary" %>
      </div>

    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,
    je ne comprends pas très bien la question. Il faut voir que ça se fait en deux étapes :

    1. une action EDIT/NEW qui va simplement afficher un formulaire pour choisir (et ne rien enregistrer).
    Il faut aussi voir le code de l'action dans ton contrôleur (def edit dans app/controllers/game_controller.rb),
    car j'imagine que tu dois avoir un @game = Game.where(id: params[:id]) dedans

    (ensuite un utilisateur manipule ce formulaire, change les valeurs, et peut-être va soumettre le formulaire, ce qui va le POSTer à...)

    2. une action UPDATE/CREATE qui va prendre les données, le résultat du formulaire et les envoyer dans des params.
    Il faut aussi voir que tu dois rentrer ces paramètres dans des attributs et les enregistrer, puis enregistre cela dans la base de données.
    Tu as probablement @game.save dans cette action (et une gestion d'erreur, c'est toujours sympa).


    Dans l'étape 1 qui est celle de la vue, il ne faut pas oublier de chercher @game dans le contrôleur : c'est avec ce @game que tu vas lire ce qui est déjà écrit dans la base (ex : pré-sélectionner le user avec la valeur qui est déjà connue)
    <%= collection_select(:game, :user_id, User.all, :id, :name) %>
    fait un tag SELECT avec le bon name, une liste de tags OPTION,
    et va noter que le OPTION "SELECTED" c'est celui qui correspond à @game.user_id

    N'hésite pas à ajouter des <% logger.debug @game %> pour voir ce qui se passe.

  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
    Bonjour,

    merci pour ta réponse rapide.

    Je vais essayer d'expliquer un peu plus mon probleme, en fait j’essaie de créer dans ma partie admin, une gestion de match entre plusieurs écoles.

    D’où le formulaire que j'ai poster plus haut. Le probleme que je rencontre vient de la relation entre mes tables, lorsque j’inscris mes données dans la base, il me demande d’insérer l'id du sport.

    dans la vue j'ai mon formulaire et en dessous je liste les matchs déjà inscrit dans la base, avec la possibilité de les supprimer.

    si je supprime la relation entre les table, l'enregistrement s’effectue sans probleme, et l’affichage des match fonctionne.

    donc j’essaie en fin de compte de récupérer l'id du sport que je sélectionne dans mon select.

    j'ai du faire une erreur dans ma démarche. si il n'y a pas de solution a mon probleme je recommencerai mon code afin de régler le problème.

  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
    Je ne comprends pas bien comment est faite ta vue, et si ton schéma de BDD est de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    * School (name)
    * Sport (name)
    * School Has And Belongs To Many Sports (Rails va faire une table school_sports contenant les clés school_id et sport_id)
    * Sport Has And Belongs To Many Schools (Rails va réutiliser la table ci-dessus)
    ou bien de cette forme-là.
    J'aime bien car tu peux faire le détail des matches mais à mon avis c'est encore un peu plus compliqué, genre "les ligues auxquelles participent les écoles" puis "liste des matches par ligue".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    * School (name)
    * Sport (name)
    * Game (date, result) (Rails va ajouter school_id et sport_id)
    * School Has Many Games, Game Belongs To School
    * Sport Has Many Games, Game Belongs To Sport
    En tout cas tu peux regarder les params qui passent dans les logs Rails. Ça rendra les choses plus claires.

    C'est quelque chose de simple avec les conventions REST, mais il faut être très clair de quel formulaire, URL et verbe HTTP on parle.
    Mais c'est facile de se compliquer la vie avec les params, avec mon équipe on a fait notre convention sur les params.

    Code : 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
     
    # dans le premier cas, dans un formulaire d'écoles
      params[:school][42][:sport_ids] == [1,2,3] # lycée Titi fait des matches de foot, volley, tennis
    # dans le premier cas, dans un formulaire de sports
      params[:sport][1][:school_ids] == [41,42,43] # football a des matches pour le collège Toto, lycée Titi, université Tutu
     
    # dans le deuxième cas, formulaire d'écoles
      params[:school][42][:game_ids] == [100,101] # les matches 100 et 101 sont avec le lycée Titi, sur le foot et le tennis
    # dans le deuxième cas, formulaire de sports
      params[:sport][1][:game_ids] == [100, 111] # les matches 100 et 111 sont avec le foot, sur le lycée Titi et l'université Tutu
     
    # dans le deuxième cas, formulaire de matches (games)
    # sur un formulaire CREATE ou UPDATE
      params[:game][101] == {sport_id: 1, school_id: 42} # ajouter ou modifier le match 101 : c'est du foot au lycée Titi
    # sur un formulaire DELETE : /games/delete/101
      params[:id] == 101 # détruire le match 101, ce qui va retirer le foot au lycée Titi
    Bon courage et bon code,

  5. #5
    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
    bon j'ai revu mon formulaire et remis en place ma vu actuellement j'arrive bien a enregistrer mes données, et a faire les updates dessus.

    Maintenant j'ai un autre probleme, car je n'enregistre plus dans ma table games les noms des écoles et des sports, mais uniquement leurs id.

    Comment puis je faire pour faire correspondre les id de ma table games avec les nom des tables schools et sports afin de pouvoir les afficher dans ma vue?


    J'utilise le systeme has_many belongs_to pour la liaison entre mes tables.



    edit: C'est bon j'ai trouvé la réponse a mon probleme dans la doc de rails. !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment changer la valeur de hidden field dans un fichier HTML.Twig
    Par AliciaSH dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2017, 19h57
  2. [PHP 5.3] Comment changer la valeur de hidden field dans un fichier HTML.Twig
    Par AliciaSH dans le forum Langage
    Réponses: 0
    Dernier message: 17/04/2017, 12h57
  3. Réponses: 3
    Dernier message: 06/09/2006, 09h06
  4. récupération de données dans un TDBControlGrid
    Par dableuf dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/11/2004, 14h25
  5. Récupération d'index dans DBLookupControl ?
    Par Michel D. dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2004, 15h01

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