Javascript 根据rails/react应用程序上api调用的状态更新我的视图

Javascript 根据rails/react应用程序上api调用的状态更新我的视图,javascript,ruby-on-rails,ruby,reactjs,gon,Javascript,Ruby On Rails,Ruby,Reactjs,Gon,我有一个rails应用程序,设置了react作为前端。我正在从rails控制器调用一个基于浏览器的api。通过Watir和控制器中的一些输入,我可以在终端中获得我的呼叫状态。例如,在我的终端,我将看到加载1%。。。装载10%等。。。直到它完成。 我想做的是向我的前端应用程序显示这个值。对rails来说是一个新概念,不知道从哪里开始。为了使用call\u apiusername方法,我正在从前端的一个按钮进行Ajax调用。到目前为止,一切都很顺利。我唯一想补充的是我在客户端的通话状态 我尝试过使用

我有一个rails应用程序,设置了react作为前端。我正在从rails控制器调用一个基于浏览器的api。通过Watir和控制器中的一些输入,我可以在终端中获得我的呼叫状态。例如,在我的终端,我将看到加载1%。。。装载10%等。。。直到它完成。 我想做的是向我的前端应用程序显示这个值。对rails来说是一个新概念,不知道从哪里开始。为了使用call\u apiusername方法,我正在从前端的一个按钮进行Ajax调用。到目前为止,一切都很顺利。我唯一想补充的是我在客户端的通话状态

我尝试过使用gem-gon,但问题是我的整个应用程序都是基于我的根路由的,因此,例如,如果我的索引方法是这样的,我的call\u-api方法是这样的

  def index
     @status = "started"
     gon.watch.status = @status
   end
当我进入浏览器控制台并尝试console.loggon.status时,由于我的应用程序仍在索引路径上,我仍然会得到started的值。
也许有更好的办法。非常感谢您对如何进行的任何帮助和建议。谢谢

如果我没说错的话,您需要在API在web上进行抓取时在视图中不断更新状态。因此,我认为您可能需要web socketing或类似的东西,因为您的API正在持续运行,并且您需要在视图中进行实时更新。请看一下网络套接字

我没有完全明白!当您的react组件挂载时,您的值被启动,然后在单击按钮并调用API后,您想更新该值吗?这就是你要做的吗?为了从我的控制器使用API,我需要刮一个网站。当API运行时,使用watir和抓取API的网站,我得到一些关于状态的信息,例如加载10%、加载20%等。此状态信息使用puts显示在我的终端中。我想做的是在我的视图上显示它。让事情变得复杂的是,我正在使用ajax调用调用控制器方法def callapiUserName,因此我唯一能得到的更新是我在ajax成功函数或ajax错误函数中输入的内容。是否有任何方法可以从我的控制器向我的窗口传递js变量?知道刮取api网站的方法不是我的索引方法,其中显示我的react front如果我没有错,那么当api在web上刮取时,您需要在视图中不断更新状态。所以我认为您可能需要web socketing或类似的东西,因为您的API正在持续运行,并且您需要在视图中进行实时更新。请看一下web socketing并让我知道结果。
  def call_api(username)
    @status = "new value for test"
    gon.watch.status = @status
    until @status == "Finished"
      @status = @browser.span(class: "monoFont").text
      puts "status" + @status
      sleep 1
    end
   end