我是Rails的新手,我正在构建一个用Perl编写的系统自动化工具的前端。我已经构建了应用程序并且所有路由都正常运行。我正在使用反向标记来运行Perl命令,然后返回标准输出。我有一个通过控制器运行的动作(Node - > Bootstrap)。
我的路线如下:
http://localhost:3000/nodes/1/bootstrap
为此路由调用方法引导程序,该程序又运行一系列包含在逻辑中的Perl / shell命令,以确保该过程完成。
我的问题是生成的HTML页面是静态的,而我的流程是多步骤的。我需要一种显示步骤进度及其相关输出的方法。
刷新/重定向以显示从单个路径启动的多个步骤的最简单方法是什么?
答案 0 :(得分:1)
我不认为你在单一路线/控制器行动中提出的要求是可能的。
简化的控制流程如下所示:
routes.rb
以确定将请求传递给哪个控制器和操作。如果你想让你的页面更“动态”,那么你唯一真正的选择是在已经输出给用户之后使用Javascript来修改页面的HTML客户端。你要问的实际上是一项非常复杂的任务,对初学者来说可能是令人生畏的。
就个人而言,我会做一些事情,例如将backticked_code_that_runs_the_perl_script
从控制器移动到后台作业,然后使用ActiveJob排队。然后在前端我写了一些Javascript,它反复轮询你的后台作业以获得它的状态,并相应地更新DOM。
这是一个非常高级的描述,但我希望它可以帮助你开始!
(请注意,直到Rails 4.1或4.2才添加ActiveJob,我忘了。如果您使用的是早期版本的Rails,它将无法使用,您将不得不使用其中一个像Resque这样的作业运行者本身)