2017-05-16 5 views
-1

Modal div in Layout-Rendering:modalen Teil durch in Rails

main 
    = render 'layouts/desktop_sidebar' 
    #modal-window.modal aria-labelledby="myModalLabel" role="dialog" tabindex="-1" 

    .main-content 
    = render 'flash' 
    = yield 

Modal Inhalt:

.modal-dialog role="document" 
    .modal-content 
    .modal-header 
     button.close aria-label="Close" data-dismiss="modal" type="button" 
     span aria-hidden="true" × 
     h4#myModalLabel.modal-title Modal title 
    .modal-body 
     | Test body content 
    .modal-footer 
     button.btn.btn-default data-dismiss="modal" type="button" Close 
     button.btn.btn-primary type="button" Save changes` 

Link-modal zu wechseln:

= link_to 'Quick Add', companies_quick_add_path, remote: true, data: { toggle: "modal", target: '#modal-window' } 

quick_add.js.erb

$("#modal-window").html("<%= escape_javascript(render 'quick_add') %>"); 

Clients Controller-Aktion:

def quick_add 
    @client = Client.new 
    initialize_client_children 

    respond_to do |format| 
     format.html 
     format.js 
    end 
end 

DOM vor Link: Image

DOM nach Link: Image

Wenn auf den Link klicken, die modal zu machen, es geht an die Controller-Aktion und erreicht erfolgreich die Sicht teilweise. Der Bildschirm verdunkelt sich, aber das Modal zeigt sich überhaupt nicht.

Wenn das modale aus dem partiellen verschoben wird und der modale Inhalt direkt unterhalb der div- und id-Deklaration platziert wird, wird das Modell gerendert, aber ich habe offensichtlich keinen Zugriff auf die Controller-Variablen.

Antwort

0

Wo ist das "#modal-window" Element? Sie sollten die .modal-body auswählen. Wie:

$(".modal-dialog .modal-body").html("<%= escape_javascript(render 'quick_add') %>"); 
+0

Das # modal-window Element ist in meiner Layout-Datei. Diese Methode funktioniert - Sie wählen auch den Modal-Körper wie Sie vorgeschlagen haben. Ich hatte einfach Layout in meinem Controller auf "false" gesetzt, um js für js zu blockieren. – Alexi

Verwandte Themen