Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 generate scaffold时,RoR在哪里定义它创建的对象?_Javascript_Jquery_Ruby On Rails_Ruby - Fatal编程技术网

Javascript 在没有数据库的情况下运行rails generate scaffold时,RoR在哪里定义它创建的对象?

Javascript 在没有数据库的情况下运行rails generate scaffold时,RoR在哪里定义它创建的对象?,javascript,jquery,ruby-on-rails,ruby,Javascript,Jquery,Ruby On Rails,Ruby,我正在尝试构建一个RubyonRails应用程序,它将允许监视和控制多个Web服务。我目前有这些服务在运行,并且能够在控制台应用程序中看到每个服务的“状态”,该应用程序列出了服务及其状态,即 Service1 Running Service2 Paused Service3 Waiting on Files 我希望RoR应用程序将这些响应收集到一个称为进程的PORO对象集合中,我认为是收集进程。然后,我希望默认路由打开“process\u list.html.erb”视图,在该视图中,jQue

我正在尝试构建一个RubyonRails应用程序,它将允许监视和控制多个Web服务。我目前有这些服务在运行,并且能够在控制台应用程序中看到每个服务的“状态”,该应用程序列出了服务及其状态,即

Service1 Running
Service2 Paused
Service3 Waiting on Files
我希望RoR应用程序将这些响应收集到一个称为进程的PORO对象集合中,我认为是收集进程。然后,我希望默认路由打开“process\u list.html.erb”视图,在该视图中,jQuery页面将被加载以创建一个数据表“process\u table”,该数据表将从该进程集合中填充。我的问题是,虽然我喜欢RoR应用程序的结构,但我不了解RoR应用程序中的控制流。如果我是在jQuery和javascript页面中编写的,我会知道index.jsp页面将包含jQuery DataTable javascript链接,该链接将在加载页面时执行。这将引用另一个javascript函数,该函数将调用Web服务、收集响应、将其转换为JSON数组并将其返回到DataTable,在DataTable中它将被呈现为一个表。我可以有一个计时器来定期刷新页面,等等。虽然它可以工作,而且我以前也构建过这样的程序,但它似乎不像一个合适的RoR应用程序那样“有条理”

以下是我迄今为止所采取的步骤:

1) rails新大师-O

2) cd大师

3) rails生成脚手架过程显示

4) 在routes.rb中,我添加了:

  resources :processes, :only => [:show]
  root 'processes#show'
这将带我进入apps/views/processs/show.html.erb页面,我认为我可以提供一个javascript页面,该页面将在加载时执行,以创建PORO对象并将它们作为数组返回到DataTables,该数组可以通过foreach循环处理,将process.name、process.status提取到表中。但是,我得到一个错误,在app/controllers/process_controller.rb中有一个部分:

def set_process
  @process = Process.find(params[:id])
end
未为流程定义“查找”。现在,我在任何地方都找不到类“进程”,也不知道这是什么,也不知道为什么要调用它。索引方法中有对@process=process.all的引用。再说一次,我在哪里定义这些


我上面展示的步骤是否是开始构建这样一个应用程序的正确方法?如果是,我该如何创建或编辑Process类并添加这些方法?我应该把这个页面的javascript放在哪里?如果能为我提供一些指向何处查看、阅读内容以便我能够理解RoR应用程序的流程的建议,我将不胜感激。

Rails scaffold做出了许多假设,期望您的控制器操作符合数据库模型/表的约定。正如其他人提到的,您应该避免使用
Process
,因为它是一个核心ruby模块,我建议您使用
MonitorProcess

如果您想使用数据库模型来存储有关进程的信息,那么您需要一个模型(
railsgmodelmonitor\u process
),也需要一个供您的控制器使用的模型

rails generate scaffold monitor_processes
但是,这将构建标准MVC设置,包括创建数据库表的迁移、模型类
MonitorProcess
、具有RESTful路由(索引、显示、新建、创建、更新和销毁)的控制器,以及索引、显示、新建、编辑视图,以及用于新建和编辑的部分表单,以及用于编写测试的文件设置

如果不需要访问数据库模型,则可以从控制器中删除这些模型,或将其注释掉。但这里有一个问题,你已经偏离了MVC的道路

before_action :set_monitor_process, only: [:show, :edit, :update, :destroy]

def set_process
  @mocel_process = ModelProcess.find(params[:id])
end
<>这里,您可以考虑使用动作电缆,然后在您想要的页面上使用自定义JS。但是这个应用程序需要rails吗??听起来这可能比你需要的要多。Scaffold是一种工具,它使基础数据驱动的应用程序的快速原型制作变得非常快速和简单。但是它附带了很多您可能不需要的用例约定

然而,如果不知道您想要创建/监视什么web服务,以及如何创建/监视,就很难说您是否应该使用Rails。它当然可以用来做脚手架之外的很多事情。这只是为了快速的基本设置和避免大量的样板文件。有很多框架可以做背景工作等,但问题是,你需要MVC吗?如果没有,那么你肯定有其他选择。如果您只需要一个具有解耦前端的后端,您可以看看
如果您喜欢使用Ruby,可能是另一种选择。

注意:Ruby并不像Java那样有任何“普通的旧Ruby对象”。在Ruby中,我们只调用这些类。如果您使用的是最新版本的Rails,您可以访问这些类,从而使实时刷新变得不那么混乱。您是否生成了
过程
模型?如果不是的话,
railsgmodel进程
来填补这个空白。我将研究ActionCable。我尝试了rails g模型流程,结果显示:在流程46121中通过Spring预加载程序运行,但似乎没有任何变化。同样的错误:未定义Process:Module的方法“all”。@JohnWooten您应该避免用ruby的核心类/模块的名称命名自定义类/模块。例如,ruby的核心已经有了一个模块。否则,这可能会导致意外的行为。这就是我得到的印象,RoR是过度的,因为它是针对数据库使用的。我想我会求助于我的旧JavaScript方法,因为我知道我可以从那里使用Web服务。Rails是非现成的,MVC体系结构,所以除非你理解并需要这种模式,否则你可能会考虑替代方案。请参阅更新的答案。再次感谢。我通常尝试使用MVC架构,因为我喜欢分离。我试图使用RoR,因为它“形式化”了RoR,提供了模板、身份验证,并创建了非常好的数据库