Ruby on rails 获得';控制器中的未知操作';

Ruby on rails 获得';控制器中的未知操作';,ruby-on-rails,Ruby On Rails,我得到了这个错误: “找不到ObjectController的操作“创建” 我知道这应该很明显,但我遗漏了一些东西,那就是我的控制器: class ObjectController < ApplicationController def index end def create end end 你可能想放弃这些路线,尝试一些简单的方法,比如 resources :objects, only: [:get, :create, :show] 然后使用 $ rake rou

我得到了这个错误:

“找不到ObjectController的操作“创建”

我知道这应该很明显,但我遗漏了一些东西,那就是我的控制器:

class ObjectController < ApplicationController
  def index
  end
  def create

  end
end

你可能想放弃这些路线,尝试一些简单的方法,比如

resources :objects, only: [:get, :create, :show]
然后使用

$ rake routes

以确保您的路线符合要求。你需要一个到/objects的POST路由来创建一个新的对象等等。

好的,其中一个是哑的,实际上我有两个目录,我没有修改正确的目录,很抱歉…

你的路由可以大大改进:

#config/routes.rb
Rails.application.routes.draw do
  root 'objects#index'
  resources :objects
--

接下来,实现所需的“标准”方法是使用
new
操作;不是“创造”行动。如果要使用
创建
路径名(而不是
新建
),您可以在以下位置定义它:

要理解为什么要使用
new
而不是
create
,您应该查找它,以及它是如何与之相关的


最后,控制器应以复数形式命名:

#app/controllers/objects_controller.rb
class ObjectsController < ApplicationController
  ...
end
#app/controllers/objects_controller.rb
类ObjectsController

尽管您可以随意调用它,Rails默认为
复数的
控制器名称,
单数的
模型名称。

这里有一些奇怪的事情,但最明显的是拼写错误:
资源:对象
(应该是
资源:对象
)。此外,按照惯例,您应该始终以复数形式命名控制器。i、 e.
ObjectsController
而不是
ObjectController
。然后使用下面的勘误表建议。谢谢你的回答,我发现了问题,但我会记住你的建议;)您需要指向
对象/index
(对象的复数形式)rake routes为我提供了正确的行为,但当我转到/objects/create时,我仍然得到了该错误
#config/routes
resources :objects, path_names: { new: "create", create: "create" } #-> url.com/objects/create
#app/controllers/objects_controller.rb
class ObjectsController < ApplicationController
  ...
end