如何在不重新加载父控制器的情况下向rails控制器发送ajax请求后关闭弹出窗口

时间:2012-04-04 13:42:32

标签: javascript jquery ruby-on-rails ruby-on-rails-3 popup

我在控制器的显示视图中,如果用户点击链接,则会显示带有表单的弹出窗口。如果用户单击“提交”,则表单将通过ajax提交到同一控制器中的自定义“操作”。在action.js.erb partial中我有以下代码:

  window.opener.location.reload();
  window.close();

它工作正常,但重新加载整个节目视图页面。我只想重点关注并在js.erb partial中编写一些div更新。

3 个答案:

答案 0 :(得分:1)

使用jquery完成后隐藏它。

$('#popup_wrapper_id').fadeOut();

答案 1 :(得分:1)

不要从helper调用,而是关闭Ajax的onsuccess事件窗口。

success: function(g) {
  window.close(); OR $('#popup_id').hide();
  $('#div_id').html("Write message or other response form your action").
}

答案 2 :(得分:0)

在关联的action.js.erb文件中,添加以下代码。

function hideDialog() {
  var $dialog = $('#dialog_area');
  if ($dialog.is(':visible')) {  
    PageOverlay.hide();      
    $dialog.hide();
  }
  return this;
};