2016-01-09 114 views
0

我得到這個錯誤:走走在控制器未知行動「

「行動‘創造’無法找到ObjectController」

我知道這應該是顯而易見的,但我失去了一些東西,這是我的控制器:

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

這裏有一些奇怪的事情發生,但最明顯的是這裏的拼寫錯誤:'資源:objets'(應該是'resources:objects')。另外,按照慣例,您應該始終以複數形式命名您的控制器。即'ObjectsController'而不是'ObjectController'。然後使用下面的勘誤表。 – dwenzel

+0

感謝您的回答,我發現了這個問題,但我會記住您的建議;) –

+0

您需要指向'objects/index'(複數對象) –

回答

0

好吧,一個愚蠢的,其實我有兩個目錄,我沒有修改正確的,對不起...

0

你可能娃NT放棄這些路線和嘗試一些簡單的像

resources :objects, only: [:get, :create, :show] 

然後使用

$ rake routes 

要確保你的路由是爲要。你會想要一個POST路由到/對象來創建一個新的對象等..

+0

rake routes給我正確的行爲,但是當我去/對象/創建我仍然有這個錯誤 –

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型號名稱。