天哪,你四个月前就问过这个问题,所以你现在可能已经明白了。我也很难找到一篇关于如何做到这一点的好文章。这是我发现的:
在任何您想要拉出此对话框的页面中,您都希望有一个像这样的 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 样式,以使对话框呈现漂亮且漂亮。