Javascript Rails:这是返回从服务器加载的AJAX对话框的正确方法吗?

Javascript Rails:这是返回从服务器加载的AJAX对话框的正确方法吗?,javascript,ruby-on-rails,ajax,prototype,Javascript,Ruby On Rails,Ajax,Prototype,我的目标结果是,当用户单击一个链接时,会弹出一个覆盖图,其中包含使用AJAX从服务器加载的新页面 我这样做的方式是使用(我使用Prototype for AJAX)创建对话框,在创建对话框后,我调用: new Ajax.Updater("div_inside_the_dialog", "url_for_the_content", {method: 'get', requestHeaders:{Accept:'text/javas

我的目标结果是,当用户单击一个链接时,会弹出一个覆盖图,其中包含使用AJAX从服务器加载的新页面

我这样做的方式是使用(我使用Prototype for AJAX)创建对话框,在创建对话框后,我调用:

new Ajax.Updater("div_inside_the_dialog",
                 "url_for_the_content",
                 {method: 'get', requestHeaders:{Accept:'text/javascript'}});
我还将内容控制器添加到我的url中:

respond_to do |format|
  format.js
  format.html
end
因此,当点击链接时,它会创建一个对话框,我的控制器用于url,用于内容,它会看到我正在发出一个JavaScript请求,并返回一些要在对话框中显示的内容

它可以正常工作,但让我感到非常奇怪的是,我必须手动编写代码,在请求头中查找JavaScript返回,然后返回的不是JavaScript,只是对话框的一堆html

另一方面,我不想仅仅为此创建一个特殊的控制器方法,因为它在概念上并不是它自己的操作,因为它显示与现有操作相同的内容,只是格式不同。此外,我必须禁用它的布局,我永远不希望用户能够直接访问它,而不是在AJAX对话框中


有人能就我如何处理整个过程以及我正在做的任何部分提供任何反馈吗?

我不太熟悉您称Ajax更新的方式,但我更喜欢通过Ajax简单地呈现表单,这也清楚地说明了为什么要在请求头中手动编写Javascript返回请求的代码。我通常的做法是将js.erb文件保存在与控制器名称对应的视图文件夹中。因此,在Views/(Controller\u Name)/I中有一个名为(Action\u Name).js.erb的文件,其外观如下:

$("div_to_update").update("<%= escape_javascript(render('updateform')) %>")
$(“div\u to\u update”).update(“”)
只要这样做,您就可以使用AJAX调用任何表单。类似地,这样的东西允许您以任何必要的方式简单地更新任何需要更新的内容。希望这有帮助