2008-09-12 6 views
2

J'utilise ActiveScaffold dans Ruby on Rails application, et ont remplacé les « actions » par défaut du texte dans la table (ie. « Modifier », « supprimer », « show ») avec des icônes en utilisant le CSS. J'ai également ajouté quelques actions personnalisées avec action_link.add ("move" et "copy").Comment changer l'ordre affiché des "actions" ActiveScaffold?

Pour plus de clarté, Je souhaite que les icônes soient affichées dans un ordre différent qu'elles ne le sont. Plus précisément, je voudrais que "edit" soit la première icône affichée.

me semble être en mesure de changer l'ordre des action_links par la modification de l'ordre de définition dans le contrôleur. J'ai également été capable de changer l'ordre des actions par défaut en commençant par config.actions, en excluant tout, puis en les ajoutant avec config.actions.add dans un ordre spécifique.

Cependant, mes actions personnalisées semblent toujours apparaître avant les actions par défaut dans la liste.

Idéalement, je les voudrais afficher « modifier » « copier » « move » « supprimer » (c.-à -, la coutume, la coutume, intégré intégré). Quelqu'un peut-il suggérer comment je pourrais faire cela?

Une idée que j'avais été de redéfinir « modifier » comme une action personnalisée (avec la fonctionnalité par défaut), mais je ne sais pas comment s'y prendre non plus.

Répondre

1

Avertissement: Je ne connais pas ActiveScaffold. Cette réponse est basée sur moi en train de lire son code source.

Il semble que la variable action_links soit une structure de données personnalisée, appelée ActionLinks. Il est défini dans ActiveScaffold::DataStructures.

En interne, il a une variable @set, ce qui n'est pas du tout Set, mais un Array. ActionLinks a un add, delete et each méthodes qui servent de gardiennes de cette variable @set.

Lors de l'affichage des liens, ActiveScaffold fait cela (en _list_actions.rhtml):

<% active_scaffold_config.action_links.each :record do |link| -%> 
    # Displays the link (code removed for brevity) 
<% end -%> 

Ainsi, à court d'étendre ActiveScaffold::DataStructures::ActionLinks ajouter une méthode pour trier les valeurs @set différemment, il ne semble pas être un moyen de le faire, au moins pas généralement.

Si j'étais vous, j'ajouterais quelque chose appelé order_by!, où vous lui passez un tableau de symboles, avec l'ordre approprié, et il recourt à @set. De cette façon, vous pouvez l'appeler après avoir ajouté vos actions personnalisées.

Questions connexes