2013-08-22 15 views
12

Aggiornamento: questo è stato a causa di un nome errato di fileActionController :: RoutingError: non inizializzata costante MicropostsController

corretto:
~/sample_app/app/controllers/microposts_controller.rb

non corretta:
~/sample_app/app/controllers/microposts_contoller.rb


Questo è il mio primo contributo qui, il feedback sul miglioramento di questo o del futuro re messaggi è apprezzato :)

Ruby on Rails Tutorial: Learn Web Development with Rails 4

Mentre si lavora attraverso il capitolo 10.3, mi sono bloccato. Alla fine, un nome di file errato mi ha fatto inseguire fantasmi per alcuni giorni.

$ rspec spec/requests/authentication_pages_spec.rb 
No DRb server is running. Running in local process instead ... 
...FF................ 

Failures: 

1) Authentication authorization for non-signed-in users in the Microposts controller submitting to the create action 
Failure/Error: before { post microposts_path } 
ActionController::RoutingError: 
uninitialized constant MicropostsController 
# ./spec/requests/authentication_pages_spec.rb:93:in `block (6 levels) in ' 

2) Authentication authorization for non-signed-in users in the Microposts controller submitting to the destroy action 
Failure/Error: before { delete micropost_path(FactoryGirl.create(:micropost)) } 
ActionController::RoutingError: 
uninitialized constant MicropostsController 
# ./spec/requests/authentication_pages_spec.rb:98:in `block (6 levels) in ' 

Finished in 0.92253 seconds 
21 examples, 2 failures 

Failed examples: 

rspec ./spec/requests/authentication_pages_spec.rb:94 # Authentication authorization for non-signed-in users in the Microposts controller submitting to the create action 
rspec ./spec/requests/authentication_pages_spec.rb:99 # Authentication authorization for non-signed-in users in the Microposts controller submitting to the destroy action 
+0

Update: questo è stato a causa di un nome di file errato ~/sample_app /app/controllers/microposts_controller.rb (was microposts_contoller.rb) – 8legged

+3

Non commentare, rispondi la tua domanda – fotanus

+1

È necessario che tu risponda alla tua domanda in modo che gli utenti non debbano leggere l'intero post e i commenti prima di rendersi conto che questo è già stato risolto. –

risposta

18

Questo è stato a causa di un nome di file errato ~/sample_app/app/controllers/microposts_controller.rb (era microposts_contoller.rb)

+0

Apprezzo che tu abbia messo la soluzione in cima. Ho avuto lo stesso identico problema ed è stato in grado di risolverlo rapidamente. :) –

+1

Avevo spostato la mia cartella 'controllers' su una directory. – IIllIIll

1

Questo può succedere anche se si dispone di un percorso nidificato la mappatura di un elenco nidificato :

Started POST "/brokers/properties/5/images/upload" for ...

ActionController::RoutingError (uninitialized constant Brokers::ImagesController):

namespace :brokers do 
    resources :properties, only: [] do 
    collection do 
     post 'upload' 
    end 
    member do 
     resources :images, only: [] do 
     collection do 
      post 'upload' 
     end 
     end 
    end 
    end 
end 

è necessario inserire il file images_controller.rb con la seguente struttura:

-controllers 
|-brokers 
    |-images_controller.rb 

Avviso nella struttura di directory images_controller.rb è discendente diretto di intermediari.

Quindi, al fine di lasciare Rails trovare la vostra classe non creare una sottodirectory properties all'interno brokers la mappatura della struttura percorso, deve essere diretto discendente di mediatori

0

In routes.rb ho digitato resource invece di resources

0

nei miei percorsi: ho avuto "/" invece di "#" per tutto il "get", in modo da cambiare la situazione di "#" get 'tutti' => 'storefront # all_items'

ottenere 'categorica' = > 'storefront # items_by_category'

get 'marchio' => 'storefront # items_by_brand'

che risolto tutti i miei errori.

0

avevo erroneamente inserito il seguito della mia application_controller.rb

corretta:include ActionController::MimeResponds

errato:include ActionController::MimeResponse

# /controllers/api/v1/application_controller.rb 

module Api 
    module V1 
    class ApplicationController < ActionController::API 
     include ActionController::MimeResponds 
    end 
    end 
end