Javascript 将RubyonRails表单转换为AJAX

Javascript 将RubyonRails表单转换为AJAX,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我有一个RubyonRails表单,目前可以发布我的结果,并将用户重定向到另一个视图并发布结果。流程是: views/tools/index.html.erb -> views/tools/ping.html.erb 由于我现在可以使用它,我想将它转换为AJAX,并让用户保持在视图/tools/index.html.erb视图上,摆脱重定向以增强用户体验。然而,基于我的工具控制器当前的设置方式,以及我对AJAX极其缺乏的知识,我不确定如何继续 下面是我目前拥有的: views/tools

我有一个RubyonRails表单,目前可以发布我的结果,并将用户重定向到另一个视图并发布结果。流程是:

views/tools/index.html.erb -> views/tools/ping.html.erb
由于我现在可以使用它,我想将它转换为AJAX,并让用户保持在
视图/tools/index.html.erb
视图上,摆脱重定向以增强用户体验。然而,基于我的
工具
控制器当前的设置方式,以及我对AJAX极其缺乏的知识,我不确定如何继续

下面是我目前拥有的:

views/tools/index.html.erb(在表单中添加了“remote:true”)

工具
发出砰的声响

您走上了正确的轨道,现在需要使用
respond_to
块修改
定义ping
操作

def ping
  ping_host(params[:ip])
  save_host(params[:ip])

  respond_to do |format|
    format.html { redirect_to tools_path } ## if you still want to have html
    format.js
  end
end
并创建一个名为
view/tools/ping.js.erb
的文件,其中包含异步运行和返回的javascript

$("#output").html("<%= j @results %>"); 
$(“#输出”).html(“”);

首先计算该块,并用该ruby代码的输出替换它。然后将其插入#output div。

执行@MattW时会发生什么。从后端,我的
工具的命中率
主机的命中率
都会更新,但是,我的视图保持在
index.html.erb
上。所以,从用户界面的角度来看,什么也没发生。好吧,至少我离这里不远了!好的,我做了更改,我在控制台日志中看到,
呈现工具/ping.js.erb(0.6ms)
确实发生了变化,但是
区域中还没有显示任何内容。@Godzilla 74如果你在Google Chrome上,你可以打开inspect元素->然后单击网络选项卡,它应该向您显示在网络上调用了什么以及返回了什么响应。@Godzilla74我的响应需要您使用jQuery。可能就是这样。我在表单提交后添加了一个“网络”选项卡显示内容的屏幕截图。我没有看到对
ping
的引用,我确实安装了
jqueryrails
gem