获取“控制器中的未知操作”

时间:2016-01-09 22:55:39

标签: ruby-on-rails

我收到了这个错误:

“无法找到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'

3 个答案:

答案 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型号名称。