2009-12-18 8 views
1

J'ai besoin d'un exemple plus complet sur la façon de mettre à jour une boîte de sélection basée sur les résultats d'une deuxième boîte de sélection dans Ruby on Rails. J'ai demandé à ce sujet déjà here. J'ai lu les commentaires de cette publication, mais je n'ai pas de chance de comprendre cela, et j'ai essayé pendant des heures. Quelqu'un sait-il un meilleur exemple (et plus complet)?mettre à jour une boîte de sélection basée sur un autre (Ruby on Rails)

Répondre

1

Ceci est généralement géré en Javascript. Je n'aime pas particulièrement coder Javascript, donc ce que je fais pour cela dans mon application est d'utiliser un form_observer (un assistant Rails qui utilise la bibliothèque Prototype Javascript pour regarder votre formulaire pour les changements d'entrée) et de mettre à jour un DIV dans le HTML contenant la deuxième boîte de sélection, basée sur les résultats d'un appel AJAX. Comme AJAX parle à mon serveur, je peux écrire une logique arbitrairement complexe dans Ruby pour rendre le nouveau HTML.

Exemple Code:

#goes in view 
<%= Code to render the first list box. %> 
<%= render :partial => 'second_list_box_partial', :locals => {:selected = insert_magic_here } %> 

<%= observe_field(:first_list_box, 
    :url => { :action => :second_box_ajax }), 
    :frequency => 0.5, 
    :update => :second_list_box_div, 
    :with => %Q| 'value=' + $('first_list_box').value; | 
    %> 

#goes in controller 
def second_box_ajax 
    first_box_value = params[:value] 
    #magic goes here 
    @selected = #more magic 
    render :partial => 'second_list_box_partial', :locals => {:selected => @selected}, :layout => false 
end 

#goes in partial 
<div id="second_list_box_div"> 
    Actual code to render list box goes here. 
</div> 
+0

merci! Je vais tester ce code maintenant et revenir à vous ... – Kara

+0

D'accord, je reçois une erreur qui dit "Liste des nombres impairs pour Hash" et il a pointé la fin de la ": selected" dans la vue. De plus, je n'ai aucune idée de ce qu'est insert_magic_here. Est-ce que c'est quelque chose construit dans Ruby? – Kara