Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails-AJAX-to-controller方法_Javascript_Jquery_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Javascript Rails-AJAX-to-controller方法

Javascript Rails-AJAX-to-controller方法,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我正在尝试获取我制作的Rails表单: 发布到控制器方法 运行命令 将结果保存到变量中 并在同一页上的div中显示它们 到目前为止,除了最后一步,我已经把一切都准备好了。通过一些AJAX教程,我不确定我做错了什么或现在缺少了什么 tools\u controller.rb def ping ip=参数[:ip] 工具类型=“ping” f=IO.popen(“ping-c3{ip}”) @输出=f.readlines 工具=工具。查找工具(工具类型:工具类型) 刀具增量(:刀具命中次数,按=1

我正在尝试获取我制作的Rails表单:

  • 发布到控制器方法
  • 运行命令
  • 将结果保存到变量中
  • 并在同一页上的
    div
    中显示它们 到目前为止,除了最后一步,我已经把一切都准备好了。通过一些AJAX教程,我不确定我做错了什么或现在缺少了什么

    tools\u controller.rb

    def ping
    ip=参数[:ip]
    工具类型=“ping”
    f=IO.popen(“ping-c3{ip}”)
    @输出=f.readlines
    工具=工具。查找工具(工具类型:工具类型)
    刀具增量(:刀具命中次数,按=1)
    工具保存
    返回@output
    
    结束
    您仍将返回整个对象。我相信您需要显式地说出希望返回的变量,因为方法中还有其他变量。见下文

    def ping
    ip=参数[:ip]
    工具类型=“ping”
    @输出=[]
    IO.popen(“ping-c3{ip}”)。每行|
    
    @输出尝试显式返回it@Beengie
    put
    仅用于调试目的,以确保命令实际上正在将某些内容记录到控制台。方法“ping”有多个变量。所以我相信你必须明确地返回你想要的。@Beengie像我现在这样试图返回整个东西有什么不对?不管怎样,我还是应该在输出中得到一些东西,对吗?我将添加代码,以便您了解我的意思。添加了返回,但是仍然没有显示在视图中。有没有可能AJAX是在ping过程完成之前启动的,因此显示的是一个没有任何内容的变量?或者其他(我不知道AJAX)想法。。。我的问题可能是
    @output
    ping
    方法中,而我正在呈现
    index.html.erb
    ?不,仍然没有。我想这是因为我在
    工具
    控制器中发布了
    ping
    方法,但仍然在
    索引
    视图中。你怎么认为?但是我不知道如何修复它。当你查看你的资源时,它甚至加载了js.erb吗?是的,在上面的控制台日志输出中,它在最后有
    渲染工具/ping.js.erb(0.1ms)
    <p>Not AJAX: <span id='output'></span></p>
    
    # Replaces all contents...
    $('#output').html("<%= j render(:partial => 'output') %>");
    
    # Will append the contents...
    $('#output').append("<%= j render(:partial => 'output') %>");
    
    = @output