2013-08-22 3 views
12

Update: Это было связано с орфографической ошибкой названия файлаActionController :: RoutingError: неинициализированным постоянная MicropostsController

правильный:
~/sample_app/app/controllers/microposts_controller.rb

неправильно:
~/sample_app/app/controllers/microposts_contoller.rb


Это мой первый вклад здесь, отзывы об улучшении этого или футу повторно проводки ценится :)

Рубин на Rails Tutorial: Learn Web Development with 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 
+0

Update: это было связано с орфографической ошибкой названия файла ~/sample_app /app/controllers/microposts_controller.rb (был microposts_contoller.rb) – 8legged

+3

Не комментировать, отвечать ваш собственный вопрос. – fotanus

+1

Согласен с тем, что вы должны ответить на свой вопрос, чтобы пользователям не приходилось читать весь ваш пост и комментарии, прежде чем осознать, что это уже было решено. –

ответ

18

Это было связано с орфографической ошибкой названия файла ~/sample_app/приложение/контроллеры/microposts_controller.rb (был microposts_contoller.rb)

+0

Я ценю, что вы положили решение на самый верх. У меня была такая же проблема, и я смог быстро ее исправить. :) –

+1

Я переместил папку 'controllers' вверх по каталогу. – IIllIIll

1

Это также может произойти, если у вас есть вложенное маршрут переводящий вложенную директорию :

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 отображающую структуру маршрута, он должен быть прямым потомком брокеров

0

в моих маршрутах: я был «/» вместо «#» для всех «получить», так изменится, что «#» получить «все» => «витрины # all_items»

получить «категорическое» = > 'storefront # items_by_category'

прибудет 'брендинг' => 'витрина # items_by_brand'

что исправлены все мои ошибки.

0

я ошибочно включил ниже в моем application_controller.rb

Correct: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 
Смежные вопросы