Ответ 1
Гош, ты спросил это 4 месяца назад, так что, вероятно, вы это догадались. У меня также возникли проблемы с поиском хорошей записи о том, как это сделать. Вот что я понял:
На любой странице, которую вы хотите потянуть за этим диалоговым окном, вы хотите иметь такой div (обратите внимание, что вы еще не хотите показывать это):
<div id="person-form" title="Person" style="display:none"></div>
В этом представлении вы также хотите, чтобы вызов Ajax вытащил это диалоговое окно:
<%= link_to 'Edit Profile', edit_person_path(person), :remote => true %>
Очевидно, вы хотите, чтобы этот путь edit_person_path перенаправлялся на какое-либо действие. Это действие должно отображать js.erb, который имеет что-то вроде следующего (в jQuery):
$("#person-form").dialog({
autoOpen: true,
height: 600,
width: 600,
modal: true,
title: 'Edit Person',
buttons: {
"Edit": function() { $("#edit_person_<%= @person.id %>").submit() },
},
open: function() {
$("#person-form").html("<%= escape_javascript(render('form')) %>")
},
});
В диалоговом окне будет показано частичное _form.html.erb.
Примечание. Вам понадобится настроить стиль jQueryUI, чтобы диалоговое окно выглядело красиво и красиво.