2016-03-23 3 views
0

Ich habe, dass action_item auf meine Admin-Seite:Aktiv Admin: ein modales Fenster von einem Klick auf einen Link action_item auslösenden

action_item :only => :index do 
    link_to I18n.t('admin.dem_ref_nvl_etb'), :action => 'whatever' 
    end 

Ich mag gerne wissen, wie ich durch Klicken auf ein Popup-Fenster angezeigt werden könnten Diese Verbindung oben, ziemlich genau wie Batch_Action, wenn Sie es mit einer "Formular" -Option verwenden (ich brauche keine solche Aktion hier, es ist nur ein einfacher Link).

Irgendwelche Hinweise?

Vielen Dank für das Lesen und Helfen!

Antwort

2

Ich habe Ihre Antwort auf Ihre Frage gefunden. Ich werde nicht auf Details eingehen, da Sie vermutlich Ihr Javascript kennen, aber das könnte weiter ausgebaut werden.

ActiveAdmin kommt mit einer modalen Dialog Javascript Bibliothek. Es ist ziemlich grob, aber kann die Arbeit erledigen. Sie können über diese Dokumentation auf der folgenden Dokumentationsseite nachlesen: in Richtung der 3/4 nach unten am Ende der Stapelaktion Formularabschnitt. Zur genauen Codeprüfung Github: https://github.com/activeadmin/activeadmin/blob/master/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee

Und das ist ein sehr einfaches Beispiel, das Sie Paste in einer Javascript-Konsole, um die Wirkung zu überprüfen kopieren.

ActiveAdmin.modal_dialog("Send email to: ", {emails: 'text'}, function(inputs) {alert (inputs.emails)}) 

Solange Sie mit Ihren Javascript-Fähigkeiten gut sind, sollten Sie auf dem richtigen Weg sein.

3

Aufbauend auf Hugues Antwort, hier ist eine weitere fleshed-out Beispiel, dass ich es geschafft, mit meinem sehr mager Javascript Fähigkeiten zusammenschustern:

In app/assets/javascripts/active_admin.js:

//= require active_admin/base 

$(document).on('ready page:load turbolinks:load', function() { 
    $('a.lextest').click(function(e) { 
    e.stopPropagation(); // prevent Rails UJS click event 
    e.preventDefault(); 

    ActiveAdmin.modal_dialog("Send email to: ", {emails: 'text'}, function(inputs) {alert (inputs.emails)}) 
    }) 
}) 

Beachten Sie, dass ich nicht verwenden die Standardeinstellung active_admin.js.coffee, weil ich Coffeescript nicht mag - nur eine persönliche Vorliebe. Dieser Code fügt allen Links mit der Klasse lextest einen onClick-Ereignishandler hinzu. Jetzt können Sie einen solchen Link mit einem link_to erstellen:

link_to('Modal', '#', class: 'lextest')

ich dies von der Art und Weise alle zusammengeschustert batch_action ist implemented.

+1

Vollständiges Beispiel mit Daten zum Zurücksetzen von Daten auf Schienen: https://github.com/heroku/retrodot/pull/28/files – Lexelby

Verwandte Themen