2008-09-12 6 views
2

Ich benutze ActiveScaffold in einer Ruby on Rails App und habe den Standard "actions" -Text in der Tabelle (dh. "Edit", "delete", "show") durch CSS ersetzt. Ich habe auch ein paar benutzerdefinierte Aktionen mit action_link.add ("move" und "copy") hinzugefügt.Wie ändern Sie die angezeigte Reihenfolge von ActiveScaffold "Aktionen"?

Für Klarheit, Ich möchte die Symbole in einer anderen Reihenfolge angezeigt werden als sie sind. Insbesondere möchte ich "bearbeiten" als das erste Symbol angezeigt werden.

Ich scheine in der Lage zu sein, die Reihenfolge der action_links durch Ändern der Reihenfolge der Definition in der Steuerung zu ändern. Ich bin auch in der Lage gewesen, die Reihenfolge der Standardaktionen durch zuerst config.actions.excluding alles zu ändern und sie dann mit config.actions.add in einer bestimmten Reihenfolge hinzuzufügen.

jedoch meine benutzerdefinierten Aktionen scheinen immer vor die Standardaktionen in der Liste zu erscheinen.

Idealerweise möchte ich, dass sie "Bearbeiten" "Kopieren" "Verschieben" "Löschen" anzeigen (dh - eingebaut, benutzerdefiniert, benutzerdefiniert, eingebaut). Kann jemand vorschlagen, wie ich das machen könnte?

Eine Idee, die ich hatte war, "Bearbeiten" als benutzerdefinierte Aktion (mit der Standardfunktionalität) neu zu definieren, aber ich weiß auch nicht, wie das geht.

Antwort

1

Vorbehalt: Ich weiß nicht ActiveScaffold. Diese Antwort basiert darauf, dass ich den Quellcode gelesen habe.

Es sieht so aus, als ob die Variable action_links eine benutzerdefinierte Datenstruktur namens ActionLinks ist. Es ist in ActiveScaffold::DataStructures definiert.

Intern hat es eine @set Variable, die kein Set überhaupt ist, aber ein Array. ActionLinks hat eine add, delete und each Methoden, die als Gatekeeper dieser @set Variable dienen.

Wenn die Links anzuzeigen, ActiveScaffold dies tut (in _list_actions.rhtml):

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

So kurz ActiveScaffold::DataStructures::ActionLinks der Verlängerung ein Verfahren hinzufügen, um die Werte in @set anders zu sortieren, zu nicht scheinen ein Weg sein, zumindest im Allgemeinen nicht.

Wenn ich Sie wäre, würde ich etwas hinzufügen, das order_by! genannt wird, wo Sie es eine Reihe von Symbolen übergeben, mit der richtigen Reihenfolge, und es resorts @set. Auf diese Weise können Sie es aufrufen, nachdem Sie Ihre benutzerdefinierten Aktionen hinzugefügt haben.

Verwandte Themen