Я закончил делать это, своего рода плагин jQuery, который опирается на ujs:
Это по моему user_sessions/new.js.erb
$(this).modal("<%= escape_javascript(render 'form') %>");
тогда я сделал плагин jQuery как таковой:
jQuery.fn.modal = function(content) {
var modal_screen = $(document.createElement('div')).addClass("modal_screen");
var modal_container = $(document.createElement('div')).addClass("modal_container");
var modal_outer_border = $(document.createElement('div')).addClass("modal_outer_border").appendTo(modal_container);
var modal_inner_border = $(document.createElement('div')).addClass("modal_inner_border").appendTo(modal_outer_border);
var modal_contents = $(document.createElement('div')).addClass("modal_contents").appendTo(modal_inner_border);
$(modal_screen).appendTo('body');
$(modal_container).appendTo('body');
$(modal_contents).append(content);
}
И да, я знаю, что это много контейнеров, но я должен был сделать это, чтобы центрировать модальное окно по вертикали и обеспечить хорошую двойную границу.
Дайте мне знать, что вы думаете об этих людях!
Возможно, дополнительный вопрос был бы при создании плагина jQuery, как я могу сделать так, чтобы я мог вызвать плагин просто с $.modal("<%= escape_javascript(render 'form') %>");
, без объекта this
и просто вызвать метод на самом объекте jQuery?