2009-09-10 8 views
0

Je dois construire quelque chose comme ce que Gmail fait pour ses étiquettes ... Il a un bouton qui, lorsqu'il est pressé, ouvre une liste déroulante affichant les étiquettes avec des cases à cocher pour la sélection. Je voudrais entendre parler des approches pour faire le popup et comment le placer juste sous le bouton.Liste de cases à cocher de type gmail dans les rails?

En outre, j'aimerais pouvoir observer la case à cocher sélectionner/désélectionner les événements et passer à l'action, donc des conseils sur cette partie seraient également appréciés ... sinon, je suppose que je devrais mettre un formulaire avec un bouton de soumission et gérer les nouvelles sélections lorsque l'utilisateur soumet.

+0

oh, j'aurais dû dire que j'utilise un prototype – lunaclaire

Répondre

0

Si la liste de cases à cocher est statique, vous pouvez effectuer tout cela directement dans l'action affichée. Dans le cas contraire, deux approches sont possibles:

  • Utilisez button_to_remote pour récupérer une action affichant la fenêtre et servant également les js nécessaires;

  • Utilisez button_to_function pour récupérer du code XML ou json (à votre gré) à partir d'une action, avec les étiquettes et les valeurs nécessaires pour les cases à cocher, puis affichez la fenêtre contextuelle.

La première peut être plus facile à faire si vous n'êtes pas familier avec tout cela, alors que le second est beaucoup plus efficace des données, car seule passe à travers l'appel asynchrone, et non le balisage ni javascript.

À propos de votre dernière question, si (un) cochant la case doit se traduire par une action côté serveur, prototype_helper fournit une fonction observe_field pratique, à utiliser comme ceci:

<%= check_box "foo", "bar" %> 
<%= observe_field "foo_bar", :url => {:action => :some_action, :controller => :some_controller} %> 

Si le (non) la vérification peut être géré côté client, vous pouvez simplement utiliser:

<%= check_box "foo", "bar", { :onclick => "someFunctionToDoWhatINeed(someArg);"} %> 

seulement deux notes:

  • JavascriptHelper et PrototypeHelper ne sont que cela, des aides: ils vous permettent de faire certaines choses avec une syntaxe très simple et sont géniaux, tant qu'ils aident; quand ils ne sont plus, n'hésitez pas à les laisser tomber et aller pour le javascript simple. J'ai utilisé prototype pendant un moment, mais je suis tombé amoureux de jquery; vous voudrez peut-être y jeter un coup d'œil.

S'il vous plaît modifier votre question ou commenter ma réponse si je ne comprenais pas votre question et/ou n'était pas utile.

Questions connexes