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 :

autre layout render avec :popup => true ?


Sujet :

Ruby on Rails

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut autre layout render avec :popup => true ?
    bonjour


    deux questions

    j'ai une page avec un layout donné et dedans deux liens (entre autres ;-) )

    un lien normal vers un controler action layout autre que celui de la page de base.

    et

    un lien utilisant Redbox (un plugin lightbox pour rails très bien ) vers le même controller mais une autre action. Mais comme au chargement il me charge la feuille de style du layout demandé et celle-ci fiche le bazar dans ma mise en page...

    comment faire pour charger un autre layout ?

    Second problème

    dans mon controler suite à une mise à jour je voudrais rediriger vers une fenêtre popup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if @examenradio.update_attributes(params[:examenradio])
        redirect_to :url=>{ :controller => "examenradios", :action => "lire", :id => @examenradio }, :popup => "true"
    else
        blalbla
    end

    mais autant dans un link-to cela fonctionne ici non :-(
    la syntaxe est-elle différente ?



    merci de votre aide

    G

  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

    si tu regardes le code généré par un link_to avec le paramètre :popup, voici ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="link" onclick="window.open(this.href);return false;">coucou</a>
    L'indication comme quoi il faut ouvrir une popup est présente dans le lien, c'est ce qui fait qu'un navigateur la comprends. Un redirect_to, ça redirige vers une action, mais tu es déja coté serveur... Le serveur se moque royalement de savoir si tu veux l'ouvrir dans une popup ou pas.
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Je suis encore débutant dans ROR,

    Je pense pour ta première question:
    quand tu fais une redirection vers une autre action tu ajoutes :layout => 'nom_layout' à la fin.

    et pour la deuxième, tu peux définir une fonction js permettant de faire la popup,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function function_popup(url) {
    	win = new Window(window_id, {destroyOnClose: true, className: "alphacube",});
    		win.setAjaxContent(url,{method: 'get'},false,true);
    		win.showCenter();
    	}
    }
    l'appel a cette fonction dans le rhtml est comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%=link_to_function('nom_lien', "function_popup('"url_for(:controller => 'nom_controller', :action => 'nom_action', :id => id)")")%>
    J'espère que j'ai pu t'aider.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    titoumimi :

    D'accord, donc a priori impossible avec un redirect_to ou bien un render_partial de rediriger vers une fenêtre en popup...

    anis50 :

    Merci, je ne suis pas avancé en ROR non plus , pour le layout j'avais lu des trucs mais c'était un peu flou... Donc dans ce cas cela marche ;-)

    merci

    Pour le popup, en effet une fonction js fonctionne bien, mais je ne voulais pas trop "salir" le code en rajoutant des fonctions non intégrées dans rails...
    Je ne connaissai pas link_to_function. merci bcp :-)

    G

  5. #5
    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
    en revanche, dans une action, tu peux parfaitement préciser le layout à utiliser :

    Using a different layout in the action render call

    If most of your actions use the same layout, it makes perfect sense to define a controller-wide layout as described above. Some times you‘ll have exceptions, though, where one action wants to use a different layout than the rest of the controller. This is possible using the render method. It‘s just a bit more manual work as you‘ll have to supply fully qualified template and layout names as this example shows:

    class WeblogController < ActionController::Base
    def help
    render :action => "help/index", :layout => "help"
    end
    end

    As you can see, you pass the template as the first parameter, the status code as the second ("200" is OK), and the layout as the third.

    NOTE: The old notation for rendering the view from a layout was to expose the magic @content_for_layout instance variable. The preferred notation now is to use yield, as documented above.
    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

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    salut,

    la fonction link_to_function est une fonction prédifinie, tu peux l'ecrire dans un fichier rb de ton application et faire un Ctr + clique dessus, et tu verras la definition.

    Pour l'histoire de Js, je pense que c'est interressant d'ajouter des fonction de ce genre, c'est tres utile pour ton application et je te conseille de les utiliser.

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

Discussions similaires

  1. [Struts-Layout] lien vers popup avec paramètre
    Par tomy29 dans le forum Struts 1
    Réponses: 10
    Dernier message: 04/11/2008, 17h30
  2. Fonction ASP: problème avec popup
    Par claralavraie dans le forum ASP
    Réponses: 6
    Dernier message: 07/02/2006, 10h31
  3. Indy ou Autre composant internet avec une appli Console
    Par Oregon09 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 13/11/2005, 05h07
  4. Un autre moyen que les popups ?
    Par bdaboah dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2005, 10h48
  5. [EJB2.1 Entity] [BES] CreateException avec ejb.CacheCreate=true
    Par Bobby McGee dans le forum Java EE
    Réponses: 6
    Dernier message: 08/10/2003, 17h11

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