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)
1
A
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>
merci! Je vais tester ce code maintenant et revenir à vous ... – Kara
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