我收到了这个错误:
“无法找到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'
答案 0 :(得分:0)
您可能想要废弃这些路线并尝试更简单的事情,如
resources :objects, only: [:get, :create, :show]
然后使用
$ rake routes
确保您的路线符合要求。您将需要一个到/ objects的POST路由来创建一个新对象等。
答案 1 :(得分:0)
好吧,一个人很傻,实际上我有两个目录而且我没有修改正确的目录,对不起...
答案 2 :(得分:0)
您的路线可以大大改善:
#config/routes.rb
Rails.application.routes.draw do
root 'objects#index'
resources :objects
-
接下来,实现您所寻找目标的“标准”方法是使用new
操作; IE不是“创建”动作。如果您想使用create
路径名称(而非new
),则可以在path_names
argument中定义它:
#config/routes
resources :objects, path_names: { new: "create", create: "create" } #-> url.com/objects/create
要了解您应该使用new
而不是create
的原因,您应该查看resourceful routing,以及它与object orientated programming的关系。
最后,您的控制器应以复数形式命名:
#app/controllers/objects_controller.rb
class ObjectsController < ApplicationController
...
end
虽然您可以随意调用它,但Rails默认为plural
控制器名称,singular
型号名称。