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 :

Question sur le fonctionnement des liste lié


Sujet :

Ruby on Rails

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut Question sur le fonctionnement des liste lié
    Bonsoir,

    J'aurais une question au sujet de RoR.. Est-ce possible de faire des liste lier en ruby ? lors d'une selection d'une liste, la deuxième liste doit s'actualiser en fonction du choix de la liste 1.

    Si oui (je pense que c'est possible), est ce que ca utilise le javascript ? ou est-ce qu'il peut gèrer cela sans utilisé le javascript?

    Je demande ca car je dois développer une application qui ne doit pas utilisé de javascript.. et comme j'ai toujours fais mes appli web avec php, je devais toujours utilisé javascript.. Vous aurez remarqué que je ne connais pas RoR, mais c'est un framework qui me semble très promèteur, et je pense que je ne vais pas tarder a m'y mettre..

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    Salut,

    Tu peux effectivement faire cela avec Rails.
    Tu ne devras pas écrire manuellement le code Javascript car Rails te fournit une série de "helpers" permettant de le générer à ta place.
    Mais dans ta page finale, il y aura bel et bien du Javascript.
    Mon blog sur Ruby on Rails : 2dconcept

  3. #3
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    Voici une solution pour 3 combo dinamiques (genres, artists, songs)
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    class TestItController < ApplicationController
      def index
        @genres  = Genre.find(:all)
        @artists = Artist.find(:all)
        @songs   = Song.find(:all)
     
      end
     
      def update_artists
        # updates artists and songs based on genre selected
        genre = Genre.find(params[:genre_id])
        puts "Genre: #{genre.inspect}----------------"
        if genre
          puts "Entered in if genre"
          artists = genre.artists
        else
          puts "Entered in else genre"
          @artists = Artist.find(:all)
        end
        songs   = genre.songs
     
        render :update do |page|
          page.replace_html 'artists', :partial => 'artists', :object => artists
          page.replace_html 'songs',   :partial => 'songs',   :object => songs
        end
      end
     
      def update_songs
        # updates songs based on artist selected
        artist = Artist.find(params[:artist_id])
        songs  = artist.songs
     
        render :update do |page|
          page.replace_html 'songs', :partial => 'songs', :object => songs
        end
      end
     
     
    end
    Modèles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Genre < ActiveRecord::Base
      has_many :artists
      has_many :songs, :through => :artists
     
    end
     
    class Artist < ActiveRecord::Base
      has_many :songs
    end
     
    class Song < ActiveRecord::Base
    end
    Views:
    index.html.erb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%= javascript_include_tag :defaults %>
    <%= collection_select(nil, :genre_id,  @genres,  :id, :name,
      {:prompt   => "Select a Genre"},
      {:onchange => "#{remote_function(:url  => {:action => "update_artists"},
        :with => "'genre_id='+value")}"}) %>
    <br/>
    <div id="artists"><%= render :partial => 'artists', :object => @artists %></div>
    <div id="songs"><%= render :partial => 'songs',   :object => @songs %></div>
    partial _songs.html.erb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%= collection_select(nil, :song_id, songs, :id, :title,
      {:prompt   => "Select a Song"}) %>
    partial _artists.html.erb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <%= collection_select(nil, :artist_id, artists, :id, :name,
      {:prompt   => "Select an Artist"},
      {:onchange => "#{remote_function(:url  => {:action => "update_songs"},
        :with => "'artist_id='+value")}"}) %>
    <br/>

Discussions similaires

  1. Question sur le fonctionnement des "fichiers ouverts"
    Par Lung dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 17/03/2012, 15h28
  2. Question sur le fonctionnement des "fichiers ouverts"
    Par Lung dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 08/03/2012, 08h33
  3. Réponses: 4
    Dernier message: 20/04/2009, 09h58
  4. Question sur le fonctionnement des sessions
    Par kuja2053 dans le forum Langage
    Réponses: 3
    Dernier message: 26/06/2007, 18h15
  5. [EJB] Question sur le fonctionnement des EJB
    Par derek.mf dans le forum Java EE
    Réponses: 9
    Dernier message: 28/03/2006, 11h45

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