【发布时间】:2019-02-25 16:31:48
【问题描述】:
我正在尝试构建一个 Ruby On Rails 应用程序,该应用程序将允许监视和控制多个 Web 服务。我目前正在运行这些服务,并且能够在列出服务及其状态的控制台应用程序中查看每个服务的“状态”,即。
Service1 Running
Service2 Paused
Service3 Waiting on Files
我想,我希望 RoR 应用程序将这些响应收集到一个名为 Process 的 PORO 对象集合和集合 Processes 中。然后我希望默认路由打开视图“process_list.html.erb”,其中将在加载时使用 jQuery 页面来创建将从该进程集合中填充的 DataTable“process_table”。我的问题是,虽然我喜欢 RoR 应用程序的结构,但我不了解 RoR 应用程序中的控制流程。如果我在 jQuery 和 javascript 页面中编写此内容,我会知道我的 index.jsp 页面将包含 jQuery DataTable javascript 链接,该链接将在加载页面时执行。这将引用另一个 javascript 函数,该函数将调用 Web 服务、收集响应、将其转换为 JSON 数组并将其返回到 DataTable,在那里它将呈现为表格。我可以有一个计时器来定期刷新页面等。虽然它可以工作,而且我之前已经构建过,但它似乎比适当的 RoR 应用程序更不“有条理”。
这是我到目前为止所采取的步骤:
1) rails new maestro -O
2) cd 大师
3) rails 生成脚手架进程展示
4) 在 routes.rb 中我添加了:
resources :processes, :only => [:show]
root 'processes#show'
这应该带我到 apps/views/processes/show.html.erb 页面,我认为我可以以某种方式提供一个 javascript 页面,该页面将在加载时执行以创建 PORO 对象并将它们返回给 DataTables一个数组,可以通过将 process.name、process.status 提取到表中的 foreach 循环来处理。但是,我收到一个错误,在 app/controllers/process_controller.rb 中有一个部分:
def set_process
@process = Process.find(params[:id])
end
并且没有为 Process 定义“查找”。现在,我在任何地方都找不到“进程”类,也不知道这是什么或为什么要调用它。索引方法中有对@process = Process.all 的引用。同样,我在哪里定义这些?
上面显示的步骤是开始构建此类应用程序的正确方法吗?如果是,我应该如何创建或编辑 Process 类并添加这些方法?我在哪里放置此页面的 javascript?一些关于在哪里查看、阅读什么以便我能够理解 RoR 应用程序流程的指针将不胜感激。
【问题讨论】:
-
注意:Ruby 并不像 Java 那样拥有任何“普通的 Ruby 对象”。在 Ruby 中,我们只调用这些类。
-
如果您使用的是当前版本的 Rails,您将可以访问 ActionCable,这可以减少实时刷新的麻烦。
-
您是否生成了
process模型?如果没有,请rails g model process填补空白。 -
我会调查 ActionCable。我尝试了 rails g 模型进程,它打印出:Running via Spring preloader in process 46121 但似乎没有任何改变。 Process:Module 的相同错误未定义方法“全部”。
-
@JohnWooten 您应该避免使用 ruby 的核心类/模块的名称来命名您的自定义类/模块。例如。 ruby 的核心中已经有Process 模块。否则,这可能会导致意外行为。
标签: javascript jquery ruby-on-rails ruby