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 :

in_place_edit et redirect_to


Sujet :

Ruby on Rails

  1. #1
    Invité
    Invité(e)
    Par défaut in_place_edit et redirect_to
    Bonjour!

    Je débute dans Ruby on rails et je me trouve face à un problème apparemment insoluble :

    J'ai un tableau avec des valeurs à afficher, je les modifie "en direct" avec un in_place_edit. Hors il s'avère qu'il y a des sous_totaux sur la page qui doivent se mettre à jour en fonction de valeurs modifiables. Je voudrais donc recharger entièrement la page à chaque changement de valeur. Mais mon redirect_to placé dans la fonction de modification appelée par le in_place edit, ne veut rien savoir et ne me redirige pas sur la fonction principale de rendu de la page.

    Voici la fonction appelée par le in_place_edit :

    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
    17
    18
    19
    20
    21
    22
    23
    #################################################################################
      #Lors du changement de valeur sauvegarde la donnée entrée dans la base
      #################################################################################
      def maj_montant
        #récupération des valeurs du champ, de la colonne, de sa valeur,
        #ainsi que l'année et la societe
        identifiant_case = params[:id]
        corespondance = identifiant_case.split("#")
        valeur = params[:value]
        parametres = params[:parametres].to_s
        parametres_sep = parametres.split("#")
     
        #récupération de l'enregistrement corespondant
        enregistrement = DmStocksEncour.find(:first,
          :conditions => ["dm_stocks_encours_id = :id",{:id => corespondance[1]}])
     
        #modification de l'enregistrement
        enregistrement = DmStocksEncour.modif_dm_stocks_encours(valeur, corespondance[0], enregistrement)
        enregistrement.save
     
        #Mise à jour de la page
        redirect_to :controller => "stocks_encours", :action => :index, :societe => parametres_sep[0], :annee => parametres_sep[1]
      end

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Le but du in_place_edit c'est justement pour ne pas avoir besoin de recharger la page.
    Donc si tu veux recharger la page à chaque fois, tu fais un update classique.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ici l'intérêt du in_place_edit et surtout de pouvoir modifier les valeurs directement dans le tableau. Mais il faut malheureusement remettre les totaux à jour et le plus ismple que j'ai trouvé est de recharger la page.

    (Les valeurs des sous-totaux et les valeurs affichées sont passées à un tableau de hachage avant de l'être, pour mettre à jour les sous-totaux il y a donc trois solutions : modifier les valeurs de la case du tableau et recharger le tableau, modifier juste l'affichage de la case, ou alors recharger toute la pege avec les nouvelles valeurs pour que le tableau soit juste. Etant donné que je n'ai aucun moyen d'avoir les coordonées des cases des sous-totaux il faut recharger la page.)

    J'ai absolument besoin d'avoir un champ cliquable pour la modification de la valeur et à part avec le in_place_edit je vois pas trop comment faire.

    Merci pour ta réponse.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Mais mon redirect_to placé dans la fonction de modification appelée par le in_place edit, ne veut rien savoir et ne me redirige pas sur la fonction principale de rendu de la page.
    Et ça renvoit quoi alors ?
    Il y a un message d'erreur ?

    Il me semblait que in_place_edit était "deprecated", non ?
    Sinon une autre solution, c'est de faire la mise à jour en Ajax, et pour recharger la page, c'est page.reload...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il fait rien du tout le redirect_to. Pas d'erreur (fin si je me souviens bien), mais il redirige pas.

    "deprecated"? c'est à dire?

    J'ai essayé en Ajax, il veut pas le reload non plus... (il envoit erreur je crois)

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    deprecated ça veut dire que ça marche encore pour le moment, mais que dans les prochaines versions de Rails, ça ne marchera plus.

    Le message d'erreur se trouve dans les logs (dans log)

  7. #7
    Invité
    Invité(e)
    Par défaut
    D'accord j'ai compris...

    Et pour faire la même chose on peut utiliser quoi? un field editable?

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Non mais sinon, tu peux le faire en ajax, avec un formulaire qui aurait 1 seul champ, avec un parametre pour savoir quel élément tu veut updater, à la fin de l'update ajax, tu fais un page.reload, pour recharger la page.
    Aussi, tu peux mettre les résultats dans un partial, et ne recharger que ce partial...

    Mais sinon comment t'avais commencé c'est pas mal, (à part le deprecated, mais bon puisqu'il marche pour le moment, pourquoi pas....)
    Tu devrais nous dire ce qu'il y a dans les logs, lorsque le redirect ne fonctionne pas. (le dernier paragraphe du fichier log/development.log) qu'on te dise ce qui ne va pas, comme ça tu auras déja un résultat, avant de te lancer plus loin.

    Autrement, regarder du coté des plugins, il me semble que le in_place_editor_field a été "pluginisé" depuis la version Rails2.
    (attention à l'arrivée de Rails3 aussi...car ce plugin risque de ne pas fonctionner)

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bona lros une autre question puisque c'est dans mon post : je voudrais mettre un confirme sur une check box, mais uniquement quand je la coche et pas quand je la décoche. On m'a dit d'insérer du java dans mon observe field mais je ne vois vraiment pas comment faire. Si tu pouvais m'aider ce serait cool!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
          <%= check_box_tag "verrou_" + i.to_s, 1, verrou, :disabled => verrou%>
          <%= observe_field "verrou_" + i.to_s,
              :url => { :action => :verrou, :annee => @annee.to_s, :societe => @societe.to_s, :colonne => i.to_s},
              :frequency => 0.5,
              :before => "Element.hide('tableau_general');Element.show('spinner');",
              :complete => "Element.hide('spinner');Element.show('tableau_general');",
              :confirm => "Voulez vous cloturer le mois de " + l(date_en_cours,:format => :only_month).to_s + "?",
              :with => "'value=' + escape(value)"
          %>
    et sinon dans mon fichier log il a uniquement :

    # Logfile created on Fri Apr 09 01:10:11 +0200 2010

    Edit : en fait l'histoire du if n'a plus lieu d'être étant donné que après avoir été coché la checkbox doit être désactivée...
    Dernière modification par Invité ; 16/04/2010 à 13h08.

Discussions similaires

  1. Probleme de port avec redirect_to
    Par benoit delporte dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 05/05/2008, 11h46
  2. Redirection avec redirect_to
    Par MaitrePylos dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 09/08/2007, 15h55
  3. redirect_to un fichier ?
    Par Membor dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 03/08/2007, 10h15
  4. Difference entre "Render" et "Redirect_to"
    Par Al3x dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 22/05/2007, 04h00

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