如何在Rails 3中关闭视图模板

时间:2011-07-22 03:08:03

标签: ruby-on-rails ruby-on-rails-3

我已使用以下代码将视图模板打开为弹出窗口:

    <%= link_to 'New User', "/users/new", :method => :get, :target => "_blank" %>

     controller code:

     def new
    render :layout => false 
     end

new.html.erb几乎没有文本框和按钮作为保存和取消

我的问题是如何在点击“保存”或“取消”按钮时关闭弹出窗口?

谢谢你, Sudhir C.N。

2 个答案:

答案 0 :(得分:0)

您需要使用javascript进行操作。用户保存后,您可以使用另一个发送此视图的视图进行响应:

<script type="text/javascript">
    window.close();
</script>

答案 1 :(得分:0)

这是一个更多的javascript问题,而不是Rails特有的问题。

您的取消按钮非常简单,例如:

<html>
    <script>
    function CloseWindow() {
        ww = window.open(window.location, "_self");
        ww.close();
    } 
    </script>
    <button type="button" onclick="CloseWindow();">Cancel</button>
</html>

(从http://snippets.dzone.com/posts/show/267被盗)

您的提交按钮不应更改。它将需要正常POST到您的控制器。控制器呈现的成功响应应该在闪存中显示“成功”消息,然后可以在三秒后自动关闭窗口:

<script>
  setTimeout( function() { CloseWindow(); }, 3000); 
</script>

这是一个非常简单的解决方案。也许可以考虑为原型或jquery调查一些弹出库(取决于你正在使用的库)。不确定现代弹出窗口拦截器是否呈现这些D.O.A.虽然。你的target="_blank"方法应该与弹出窗口拦截器很好用。

编辑:如果您使用的是jquery,可以考虑使用模态对话框:http://jqueryui.com/demos/dialog/#modal-form