Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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:在一个操作中多次更新视图_Javascript_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Javascript Rails:在一个操作中多次更新视图

Javascript Rails:在一个操作中多次更新视图,javascript,ruby-on-rails,ruby,ajax,Javascript,Ruby On Rails,Ruby,Ajax,我正在从事RubyonRails(5.2)项目。我将在细节上有点含糊,因为我正在寻找更多的理论答案,或者关于如何处理这个问题的建议,而不是具体的解决方案。在这个项目中,我有一个按钮,将启动控制器的行动。同一视图中还有一个字段,显示我要修改的“状态” 理想情况下,单击按钮后,将调用下面的控制器操作。(假设执行的代码需要时间(~10秒),并且不能放在后台作业中。)在函数执行的不同点,我想修改视图中的DOM元素 classx\u控制器查看。它允许您向用户广播函数执行状态。并将上述功能放入后台作业(它允

我正在从事RubyonRails(5.2)项目。我将在细节上有点含糊,因为我正在寻找更多的理论答案,或者关于如何处理这个问题的建议,而不是具体的解决方案。在这个项目中,我有一个按钮,将启动控制器的行动。同一视图中还有一个字段,显示我要修改的“状态”

理想情况下,单击按钮后,将调用下面的控制器操作。(假设执行的代码需要时间(~10秒),并且不能放在后台作业中。)在函数执行的不同点,我想修改视图中的DOM元素

classx\u控制器
我想调用的JS函数只是修改一个DOM元素

function start_loading_bar(msg) {
  $('.progress-message').text(msg + "...")
  $('#progress').fadeIn()
}
从用户的角度来看,单击按钮后,将在底部弹出一个状态栏。在不同的执行点,状态栏显示的消息将从“步骤1”更改为“步骤2”再更改为“步骤3”,而无需用户进行任何其他输入

我尝试了多种方法来解决这个问题

最初我只是将函数绑定到按钮的onclick上,但是,这个方法不允许我在之后修改它,因为onclick在开始时只触发一次

接下来,我尝试制作一个包含我要修改的DOM元素的分部,并在控制器操作中使用不同的参数对其进行渲染。但是,您不能在一个操作中将多个重定向到/渲染,我遇到了一个错误

我想知道这是否有可能做到?我处理这个问题正确吗?我是否忽略了一个更好的实现?

看看。它允许您向用户广播函数执行状态。并将上述功能放入后台作业(它允许您发送消息)

<>同时,在生产中考虑使用

< P>查看。它允许您向用户广播函数执行状态。并将上述功能放入后台作业(它允许您发送消息)


此外,在生产过程中,考虑使用“

< p>”,您可以尝试呈现Flash消息(虽然我不确定它是否能工作)。 通常这是通过WebSocket或ajax完成的。 使用websockets,您将拥有一个openconnection,从be发送事件并从fe收听事件。正如MrSnax所说,您可以使用actioncable,这是最好的方法,但它更复杂,更难设置


第二种方法是联合。每1,2,3…n秒发出一次ajax请求,找到适合您的用例的内容,并在收到与服务器不同的内容时调用js。

您可以尝试呈现flash消息(尽管我不确定它是否有效)

通常这是通过WebSocket或ajax完成的。 使用websockets,您将拥有一个openconnection,从be发送事件并从fe收听事件。正如MrSnax所说,您可以使用actioncable,这是最好的方法,但它更复杂,更难设置

第二种方法是联合。每1,2,3…n秒发出一次ajax请求,找到适合您的用例的内容,并在收到与服务器不同的内容时调用js