Ответ 1
Это произошло из-за неправильного имени файла ~/sample_app/app/controllerlers/microposts_controller.rb(было microposts_contoller.rb)
Обновить. Это произошло из-за неправильного имени файла
правильный: ~/sample_app/app/controllers/microposts_controller.rb
неправильный: ~/sample_app/app/controllers/microposts_contoller.rb
Это мой первый вклад здесь, приветствуется обратная связь по улучшению этой или будущей публикации:)
Учебник Ruby on Rails: Изучите веб-разработку с помощью Rails 4
Во время работы над главой 10.3 я застрял. В конце концов, имя файла с орфографической ошибкой застало меня преследовать призраков в течение нескольких дней.
$ 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
Это произошло из-за неправильного имени файла ~/sample_app/app/controllerlers/microposts_controller.rb(было microposts_contoller.rb)
Это также может произойти, если у вас есть вложенный маршрут, сопоставляющий вложенный каталог:
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
Вы должны поместить ваш файл images_controller.rb
в следующую структуру:
-controllers
|-brokers
|-images_controller.rb
Обратите внимание, что структура каталогов images_controller.rb
является прямым потомком брокеров.
Итак, чтобы Rails обнаружил, что ваш класс не создает подкаталог properties
внутри brokers
, отображающий структуру маршрута, он должен быть прямым потомком брокеров
В routes.rb
я набрал resource
вместо resources
в моих маршрутах: у меня было "/" вместо "#" для всех "get", поэтому измените это на "#", get 'all' = > 'storefront # all_items'
получить 'категориальный' = > 'storefront # items_by_category'
получить 'брендинг' = > 'storefront # items_by_brand'
который зафиксировал все мои ошибки.
Я неправильно включил ниже в application_controller.rb
Правильно: include ActionController::MimeResponds
Неверно: include ActionController::MimeResponse
# /controllers/api/v1/application_controller.rb
module Api
module V1
class ApplicationController < ActionController::API
include ActionController::MimeResponds
end
end
end