Update : Cela était dû à un nom de fichier mal orthographié
correct:~/sample_app/app/controllers/microposts_controller.rb
incorrect:~/sample_app/app/controllers/microposts_contoller.rb
C’est ma première contribution ici, les commentaires sur l’amélioration de cette annonce ou de futures publications sont appréciés :)
Didacticiel Ruby on Rails: Apprendre le développement Web avec Rails 4
En travaillant dans le chapitre 10.3 , je me suis retrouvé coincé. À la fin, un nom de fichier mal orthographié m'avait chassé des fantômes pendant quelques jours.
$ 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
Cela était dû à un nom de fichier mal orthographié ~/sample_app/app/controllers/microposts_controller.rb (c'était microposts_contoller.rb)
Cela peut également se produire si une route imbriquée mappe un répertoire imbriqué:
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
Vous devez placer votre fichier images_controller.rb
avec la structure suivante:
-controllers
|-brokers
|-images_controller.rb
Remarquez dans la structure de répertoire images_controller.rb
est le descendant direct des courtiers.
Donc, pour permettre à Rails de trouver votre classe, ne créez pas de sous-répertoire properties
à l'intérieur de brokers
mappant la structure de la route, il doit être un descendant direct des courtiers.
Dans routes.rb
j'ai tapé resource
au lieu de resources
Juste pour aider si quelqu'un est coincé avec un problème similaire:
J'ai mal orthographié le contrôleur, si vous tapez sans le s dans les produits c'était faux:
Faux:
get '/my_products', to: 'product#my_products'
Droite:
get '/my_products', to: 'products#my_products'
J'avais mal inclus le ci-dessous dans mon application_controller.rb
Correct: include ActionController::MimeResponds
Incorrect: include ActionController::MimeResponse
# /controllers/api/v1/application_controller.rb
module Api
module V1
class ApplicationController < ActionController::API
include ActionController::MimeResponds
end
end
end
dans mes itinéraires: j'avais "/" au lieu de "#" pour tout le "get", changez donc ceci en "#" get 'all' => 'vitrine # all_items'
get 'categorical' => 'vitrine # items_by_category'
get 'branding' => 'vitrine # items_by_brand'
cela a corrigé toutes mes erreurs.