我有一个Web应用程序,允许用户通过弹出窗口编辑模型数据。当弹出窗口窗体完成时,用户单击“保存”按钮,窗口关闭,原始页面重新加载以显示发生在数据上的任何更新。Rails控制器保存模型和关闭弹出窗口的方法
我的技术只有时才有效。我不能为了我的生活找出它为什么一次工作,为什么它不是另一个。
在我的弹出窗口的形式,我有这样的submit方法:
<%= submit_tag("Update Invoice", {:onclick=>"refreshParent()"}) %>
因此,JavaScript是在该表单被提交到控制器同时执行理想。下面是refreshParent()JavaScript函数:现在
function refreshParent(id) {
window.opener.location.reload();
window.close();
}
,通过我的表格(在这种情况下,“更新”)调用的方法不具有redirect_to的方法调用,但即使当我做(比如,在原始视图,索引),这似乎并不重要。
在根,似乎我的控制器方法不会触发表单提交。有时。我可以多次提交相同的表单数据,并且会第三次运行。或者有时它可以马上工作。这完全是随机的。
如何确保我的控制器方法在关闭弹出窗口时触发?
谢谢, 亚伦。
啊,你的评论让我的脑袋响彻了我的脑海!我没有在弹出窗体上调用form_for,而是调用了remote_form_for,并从提交按钮中删除了onclick事件。然后在RJS中,我刚刚输入了相同的调用来关闭窗口,并重新载入了我在单独函数中使用的父代: page <<“window.opener.location.reload();” page <<“window.close();” 热潮!一切都很好!非常感谢您的建议;没有必要的jQuery! – 2009-10-30 22:59:02
我一直在使用jQuery和Rails一段时间,并且完全忘记了Rails内置的所有JS帮助器。很高兴我能够提供一些灵感! – 2009-10-31 06:00:49