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 :

a href= img src= avec rails


Sujet :

Ruby on Rails

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut a href= img src= avec rails

    bonjour,

    je vais essayer d'être simple et complet :

    (1) j'ai une page d'administration du site qui me permet les opération CRUD
    ainsi si je clique le lien "show" de la 3eme ligne, j'active un a href="/expos/3">Show qui me déclenche la méthode
    def show
    @expo = Expo.find(params[:id])
    etc..

    (2) La méthode "show" me balance une autre page "show.html.erb"
    dans laquelle l'image associée (ici) à la 3eme ligne doit être une image cliquable, et çà je n'arrive pas à le faire.
    J'arrive bien à afficher l'image : (http://localhost:3000/images/julia/i...ng.?1226327434)
    mais je ne sais pas la rendre cliquable vers une autre méthode.

    C'est pourtant très simple à faire en HTML et en plus si je le fais directement dans l'html.erb je n'arrive plus à retrouver ma méthode que je veux appeler.
    Et de toutes façons je veux le faire depuis (2) et non pas dans le "html.erb"
    en bidouillant.

    J'ai cherché, il y a des centaines de pages sur le web
    mais je ne vois toujours pas comment faire

    merci de vos réponses

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Pour afficher une image cliquable, tu peux faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    link_to(image_tag('machin.png'), :controller => 'machin', :action => 'bidule'))
     
    link_to(image_tag('machin.png'), machin_url) # avec une route nommée ou restful

    C'est pourtant très simple à faire en HTML et en plus si je le fais directement dans l'html.erb je n'arrive plus à retrouver ma méthode que je veux appeler.
    Et de toutes façons je veux le faire depuis (2) et non pas dans le "html.erb"
    en bidouillant.
    Désolé, mais là j'ai rien compris
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut taum merci de ton conseil


    je tente d'abord de récapituler la problématique :
    j'affiche une page "index" qui me balance une liste de produits
    et pour chacun d'eux je peux faire des opérations du type CRUD
    alors je clique en mode SHOW sur le 11ème produit
    et j'affiche ainsi une page concernant le produit n°11

    et cette page contient une image cliquable qui doit me renvoyer
    sur une autre page de nature différente mais toujours relative au produit n°11
    (et c'est le clique sur l'image qui doit déclencher cela)
    Par exemple le clique va me renvoyer toutes les images associées au n°11.


    dans mon controller "expos" j'ai rajouté la méthode "editer"
    qui ne sert à rien, sauf à tracer que je passe bien par elle

    def editer
    puts "========EDITS=" + params[:id]
    @expo = Expo.find(params[:id])
    puts "=========editer==end=======1006788=============="
    end

    cette méthode "editer" je compte l'appeler depuis mon show.html.erb
    sur le clique de l'image (ici n°11) et selon tes recommandations j'ai codé
    dans show.html.erb :
    <p>
    <%= link_to(image_tag(h @expo.auth + "/images12/" + @expo.file + "." + @expo.typf ), :controller => 'expos', :action => 'editer') %>
    </p>

    donc on y va :
    je choisi (SHOW) pour la 11ème ligne dans ma page "index"
    et comme tout va bien, je vois apparaître la page qui m'affiche
    le contenu de l'article n° 11 (ici c'est l'article "cirque" qui est affiché sur la page)
    mais avec en plus
    une image censée me renvoyer sur autre chose si je clique dessus.
    l'explorer me donne dans la barre adresse : http://localhost:3000/expos/11
    Si je fais "Afficher>Source" je vois que ce que j'ai codé, selon tes
    recommandations, a donné :
    <a href="/expos/editer"><img alt="Cirque" src="/images/julia/images12/cirque.png.?1226327434" /></a>

    bon
    maintenant je clique sur l'image et je m'attends à passer
    dans la méthode "editer"
    et non,
    je me prends une erreur :

    ActiveRecord::RecordNotFound in ExposController#show
    Couldn't find Expo with ID=editer

    dans la barre adresse du message d'erreur, j'ai :
    http://localhost:3000/expos/editer

    si bêtement je modifie cette barre adresse en :
    http://localhost:3000/expos/editer/11
    et que je fais "enter"
    dans la console, j'ai bien ma trace de la méthode "editer"
    ========EDITS=11

    où est l'erreur ?

    j'ai l'impression qu'il faudrait que je génère une adresse url depuis
    la methode "show" en lui ajoutant le params[:id]
    pour reprendre cet url dans le show.html.erb

    mais cela ne me paraît pas normal d'en arriver là.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    link_to(image_tag(h @expo.auth + "/images12/" + @expo.file + "." + @expo.typf ), :controller => 'expos', :action => 'editer', :id => @expo.id)
    Mais tu devrais déclarer une ressource RESTful (si ce n'est pas déjà fait) et utiliser la route:
    C'est quand même plus clair
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  5. #5
    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
    Couldn't find Expo with ID=editer
    Ca c'est typique une erreur de :method (get post update...)
    Il te manque :id => 12 dans ton lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :controller => 'expos', :action => 'editer', :id => 12
    dans mon controller "expos" j'ai rajouté la méthode "editer"
    qui ne sert à rien, sauf à tracer que je passe bien par elle
    Que c'est vilain !
    Si ça sert à rien, ne le fait donc pas.
    En plus, ça te fait sortir des conventions Restful pour rien.

    Si tu étais Restful tu pourrais utiliser :
    D'apres moi ton vrai probleme, c'est que tu as généré un CRUD d'une maniere que tu ne maitrises pas, et ducoup tu voudrais que tout marche trop facile pour tout le reste.
    Je te conseille de commencer un projet à partir de rien, et faire étape par étape pour bien tout assimiler.
    Ne fais pas de scaffold ou autre, juste script/generate model et script/generate controller.
    Et petit à petit tu vas comprendre chaque méthode, etc.
    (Ce qui n'empeche pas d'avoir sous les yeux ton projet actuel, pour t'aider dans l'écriture du code)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut mode debug mon cher zfred par contre taum ..

    sinon bien sûr ce n'est que du pipot !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut mode debug mon cher zfred par contre taum ..

    sinon bien sûr ce n'est que du pipot !
    mais c'est pour mon mode "debug"'


    taum
    je vais essayer ce que tu me dis
    et je pense que c'est bon -a priori

    a+

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 92
    Points
    92
    Par défaut c'est tout bon

    Bon çà marche merci Taum.

    <%= link_to(image_tag(h @direx), :action => 'say', :id => @expo.id ) %>

    je suis passé par une variable @direx à cause de la nécessité du " File.join"

    de là à dire que mon code est nickel il y a encore du chemin à faire ..

    Mais je le redis, je suis sur le mode "maintenance" çàd "ADMIN"
    c'est vrai que lorsque je voudrais reprendre çà en mode "client" çà sera plus chaud.


    Par contre Zfred m'a jeté le trouble :

    <citation>
    En plus, ça te fait sortir des conventions Restful pour rien.
    Si tu étais Restful tu pourrais utiliser :
    Code : edit_expo(12)
    </citation>

    <reponse>
    Restful connaît pas (encore)
    donc je ne comprend rien
    </reponse>

    <citation>
    D'apres moi ton vrai probleme, c'est que tu as généré un CRUD d'une maniere que tu ne maitrises pas, et du coup tu voudrais que tout marche trop facile pour tout le reste.
    Je te conseille de commencer un projet à partir de rien, et faire étape par étape pour bien tout assimiler.
    Ne fais pas de scaffold ou autre, juste script/generate model et script/generate controller.
    Et petit à petit tu vas comprendre chaque méthode, etc.
    (Ce qui n'empeche pas d'avoir sous les yeux ton projet actuel, pour t'aider dans l'écriture du code)
    </citation>

    <reponse>
    je maitrise pas quoi ? qui y a-t-il de caché encore ?
    j'ai commencé à partir de rien (si 3 bouquins + les forums) et il me semble que j'ai avancé trop très lentement (étape par étape ?)
    Le scaffolding en 2.1.0 marche mal, je fais tout (ou presque) à la main
    </reponse>

    En dehors de ces petites remarques
    je vous remercie de vos réponses et indications.

    je ne clôt pas tout de suite le sujet au cas où ..

  9. #9
    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
    Désolé de t'avoir jeté le trouble, j'aurai dû m'abstenir de répondre en fait.
    (surtout que Taum avait trés bien répondu avant)
    En plus, ça te fait sortir des conventions Restful pour rien.
    Pour etre Restful, faut s'en tenir aux 7 méthodes de base, donc "edit" dans ton cas et non pas "editer".
    "edit" sera routé naturellement vers la bonne url avec invocation de GET (ce qu'il faut)
    Pour router "editer", Rails va consulter le fichier config/routes.rb et se contentera du map.connect ':controller/:action/:id' qu'il va trouver à la fin.
    Dans ton cas tu oublies de spécifier :id => xxx dans ta balise link_to
    Rails ne peut pas router correctement (2 arguments au lieu de 3 dans le hash des options) et il met "editer" à la place de ce que devrait etre l'id.
    Ce qui explique l'erreur Couldn't find Expo with ID=editer
    C'est un peu plus compliqué que ça (il y a aussi les histoire de GET POST...), mais bon, j'espere que ça peut déja éclairer un peu.

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

Discussions similaires

  1. [Dojo] dijit.form.button avec balise img src
    Par johncrom dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 14/05/2012, 10h46
  2. echo avec la balise <img src="" /> ! Comment faire ?
    Par Delvauxo dans le forum Langage
    Réponses: 6
    Dernier message: 13/05/2011, 19h05
  3. Problème avec <img src='file:
    Par bencot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/06/2010, 09h02
  4. problème avec html:img src="file
    Par luna007 dans le forum Struts 1
    Réponses: 5
    Dernier message: 08/06/2008, 01h32
  5. Réponses: 5
    Dernier message: 23/08/2004, 21h12

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