我收到这个错误:
"找不到ObjectController"的操作"create"
我知道这应该是显而易见的,但我错过了一些东西,那就是我的控制器:
class ObjectController < ApplicationController
def index
end
def create
end
end
这就是我的路线:
Rails.application.routes.draw do
get 'object/index'
get 'object/create'
match ':controller(/:action(/:id))', :via => :get
resources :objets
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
root 'object#index'
你可能想放弃那些路线,尝试一些更简单的东西,比如
resources :objects, only: [:get, :create, :show]
然后使用
$ rake routes
确保你的路由是应该的。你会想要一个到/objects的POST路由来创建一个新的对象等等。
好吧,这个很愚蠢,实际上我有两个目录,但我没有修改正确的目录,很抱歉。。。
您的路线可以大大改进:
#config/routes.rb
Rails.application.routes.draw do
root 'objects#index'
resources :objects
--
接下来,实现您想要的目标的"标准"方法是使用new
操作;IE不是"创建"操作。如果您想使用create
路径名(而不是new
),您可以在path_names
参数中定义它:
#config/routes
resources :objects, path_names: { new: "create", create: "create" } #-> url.com/objects/create
为了理解为什么应该使用new
而不是create
,您应该查找资源路由,以及它与面向对象编程的关系。
最后,您的控制器应以复数形式命名:
#app/controllers/objects_controller.rb
class ObjectsController < ApplicationController
...
end
虽然您可以随意调用它,但Rails默认为plural
控制器名称和singular
模型名称。