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 :

Navigation entre pages avec option de tri,etc


Sujet :

Ruby on Rails

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut problème accès BD et .downcase UP de [Navigation entre pages avec option de tri]
    Bonjour,

    je suis en train de travailler sur un projet de diplome qui consiste à améliorer la navigation dans une application de choix des travaux de diplome pour les étudiants.

    La pour les étudiants est simple : c'est une liste des choix de diplômes disponibles

    Maintenant les étudiants ont plusieurs options de tris, selon prof, genre,etc.
    Ils peuvent aussi avoir accès aux détails d'un projet ( sa déscription complête ) et cela charge la page du projet en question. Mais lorsque qu'on utilise la touche précédant du navigateur ou le lien "page précédante" les options de tris sont remis à 0 et on se retrouve à la page 1.

    <%= link_to [image_tag("previous.png", :border => '0', :align => 'absmiddle'), 'Liste'], :action => 'list' %>
    voici le code de ce bouton. C'est clairement faux, ca je le sais.

    :action => 'list'
    recrée simplement la liste des projets et c'est pour cela que tout est remis à 0 à mon avis.

    Il me faudra un truc genre @page.previous

    COmment puis-je sauvegarder ces options ?.

    Serais ce dans la variable @sessions ??
    Y a t il une méthode pour directement accèder à la derniere page vue ?

    Je ne sais pas si ma requête est claire, mais dans le cas contraire veuillez me le signaler et j'essayerai de completer .

    Merci beaucoup à vous en attendant votre réponse je vais continuer à farfouiller un peu par-ci par-là en quete d'une solution.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour,

    Je pense que dans ton cas, le mieux serait de stocker les paramètres de tri, page en cours, ... dans la session, afin que ton action list dispose à tout instant des informations nécessaires pour re-afficher l'équivalent du dernier résultat de tri / navigation
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    oui, c'est une bonne idée ca. Je vais mem mettre en recherche de doc sur la facon de stocker ces infos dans la variable sessions.

    Merci mille fois de ta réponse rapide et je vais publier ma soluce ici dès que c'est trouvé pour les suivants qui chercheront pareil que moi ^^

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    Le seul problème de stocker dans la session c'est que les users pourront pas vraiment se "partager" une page, ie envoyer directement l'adresse par copié/collé. Après ca dépend tu contexte, mais parfois, si y a pas 10000 critères de tri ca peut valoir le coup de passer les paramètres en GET ( comme ça 2 personnes copiant/collant la même URL auront la même page )

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    nan, car les élèves doivent se logger sur cette application avec leur identifiant de l'école et cela est authentifié par LDAP.
    en comparant les email et mdp dans la base de l'école.

    Donc le problème du copier coller ne se pose même pas.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    Un autre petit problème se psoe à moi, je n'ai pas voulu créer de deuxième post pour ne pas polluer le chan, donc j'ai UPé celui-ci.

    1ère chose
    quand je veux comparer les deux Emails, celle l'école et celle dans ma base, j'aimerais faire un downcase sur les.


    etu = Student.find(:first, :conditions=> {:email.downcase => (mail_ldap(@remote_user).downcase)})
    Students : ma table des étudiants
    :email : le champ email dans la base
    mail_ldap(@remote_user) : la méthode LDAP qui me retourne l'email de l'école

    :email.downcase je n'ai pas le droit de le faire, comment pourrais je dire que je veux que le retour de ce .find doit etre .downcase ?

    2ème chose
    j'ai 2 tables une projects, et une professors lié par

    Projects
    belongs_to :professor

    Professors
    has_many :projects
    Dans la table Projects, j'ai un champ professor_id qui correspond au champ id dans professor,donc une relation par clé étrangère.

    La ou cela coince, c'est quand je fais une requete select sur la table project,
    professor_id.nom. J'aimerais accèder grâce à la clé dans la table projects sur le nom du professor dans la table professors

    J'éspère que c'est clair.. je ne sais pas trop mais je pense pas que c'est des gros gros problèmes et que vous pourrez surement m'aider

    Select from Projects where id_professor.nom = nom_du_prof

    un truc du genre quoi ^^ et il me dis toujours qu'il ne trouve pas le champ nom dans la table projects.

    Aurais-je mal fais ma relation entre les tables ? ou ma requete la ou c'est souligné ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    1) Pourquoi tu n'ajoutes pas dans ton model une methode pour récupérer l'email en downcase ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Student < ActiveRecord:Base
      def email_down
        return email.downcase
      end
    end
    Ou l'autre option, si tu as toujour besoin de la version "downcase", fait un before_save/update dans ton model dans lequel tu appelles downcase sur l'email avant de sauver l'enregistrement.

    2)
    Pourquoi tu n'utilises pas le Model Professors pour récupérer la liste des projets d'un profs ?
    project_list = myProf.projects
    Sinon pour faire dans le sens que tu veux, de mémoire il faut utiliser :include dans find.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    en fait, le problème c'est que dans la base données de l'école,

    les émails peuvent être écrit soit Prenom.Nom / prenom.Nom / prenom.Nom / Prenom.nom / prenom.nom.

    C'est la même chose dans ma base à moi. De plus l'admin à la possibilité de faire des changements manuels. Donc je voulais faire cela directement dans la comparaison. Puisque l'email est juste utilisé là. Et comme ca si je le fais dans la comparaison ca marchera à tout les coups.

    donc en fait le truc que je recherche est comment je peux rechercher dans ma base quelque chose dont je ne suis pas sur de la casse. :email en l'occurence

    etu = Student.find(:first, :conditions=> {:email => (mail_ldap(@remote_user).downcase)})

    j'ai trouvl un truc mais je n'arrive pas à l'appliquer :

    "LOWER(#{table_name}.#{key}) LIKE ?"
    @people = People.find(:all, :conditions => ["LOWER(nom) LIKE ? AND 'danstable = 'V'",'%' + params[:search][:nom].downcase + '%']
    :order => 'nom ASC',
    :limit => 10)

  9. #9
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    et quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Student < ActiveRecord:Base
      def email
        email_down = read_attribute email
        email_down.downcase
      end
    ?
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    le problème c'est qu'a ce point, jke ne travaille pas encore sur un objet student.

    je suis dans le login et l'émail du student je le trouve grâce à

    code:
    @remote_user = request.env['REMOTE_USER']
    Ensuite je fais cette recherche

    code:
    prof = Professor.find(:first, :conditions => {:email => @remote_user })
    etu= Student.find(:first, :conditions => {:email => @remote_user })
    afin de savoir si c'est un professeur ou un étudiant pour voir les priviligèes auxquels il à accès.

    donc je suis obligé de faire un find, mais j'aimerais un find insensible à la casse ou quelque-chose du gênre.

  11. #11
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    essaie en utilisant un like plutot qu'un égal (merci à mon collègue de bureau )
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    quelque chose comme ca ?

    code :
    etu = Student.find(:first, :conditions => "email LIKE '#{(mail_ldap(@remote_user)).downcase}'")

    logger.info "etu :" + etu.email
    mais ca me donne ca :
    You have a nil object when you didn't expect it!
    The error occurred while evaluating nil.email

    il ne trouve pas de mail correspondant donc quand je fait le logger il y a une erreure

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 9
    Points
    9
    Par défaut
    j'ai aussi un autre soucis,

    la vue dans l'appli est géré par une variable avec différentes valeurs.

    On a le privilège de l'utilisateur ainsi que la vue souhaité :

    code :
    class LoginController < ApplicationController

    # Initialisation des valeurs pour chaque utilisateur de l'application Web
    @@valeurs_lvl = {'Visiteur' => 10, 'Etudiant' => 20, 'Professeur' => 30, 'Administrateur' => 40}

    #Initialisation des valeurs pour la variable de vue
    @@vue_lvl = {'Vue_Visiteur' => 10, 'Vue_Etudiant' => 20, 'Vue_Professeur' => 30, 'Vue_Administrateur' => 40}

    def index
    @valeurs = @@valeurs_lvl
    @vue_lvl = @@vue_lvl

    #exemple pour l'admin
    list_admin.each{ |adm|
    if adm == @remote_user
    session[:lvl] = '40'
    session[:vue] = '40'
    end

    maintenant j'aimerais créer un drop down select box, dans le panneau latéral qui permet de changer la vue, mais elle doit invoquer la méthode suivante afin de tester si l'utilsateur a droit a cette vue:

    code : dans application.rb
    def check_vue_lvl(vue_lvl)
    if vue_lvl > session[:lvl] or session[:lvl].nil? #niv vue souhaité < que privilège
    vue_lvl = session[:lvl]
    end
    return vue_lvl
    end
    es ce possilbe ? avec genre :

    code :
    <%= select ( 'vue_lvl' , 'session[:vue]', [['visiteur','10'], ['etudiant','20'], ['professeur','30'], ['administrateur','40']], :multiple => false) %>

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/02/2015, 18h24
  2. navigation entre page jsf selon le choix d'un option
    Par ramoucha23 dans le forum JSF
    Réponses: 2
    Dernier message: 16/06/2011, 16h09
  3. Navigation entre pages, mais URL figée
    Par maVariable dans le forum JSF
    Réponses: 4
    Dernier message: 21/07/2008, 13h23
  4. [Visual Web] [VWP] Navigation entre pages WEB
    Par david71 dans le forum NetBeans
    Réponses: 1
    Dernier message: 27/09/2007, 00h28
  5. [XAML, XBAP, WPF] Navigation entre pages
    Par despeludo dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 20/03/2007, 00h25

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