web-dev-qa-db-ja.com

ActionController :: RoutingError:初期化されていない定数MicropostsController

Update:これは、スペルミスのファイル名が原因でした

正しい:
~/sample_app/app/controllers/microposts_controller.rb

正しくない:
~/sample_app/app/controllers/microposts_contoller.rb


これが私の最初の貢献です。これまたは今後の投稿の改善に関するフィードバックをお待ちしています:)

Ruby on Railsチュートリアル: Learn Web Development with Rails 4

10. の章で作業をしていると、行き詰まってしまいました。最後に、ファイル名のスペルを間違えたため、ゴーストを数日間追跡しました。

$ 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
17
8legged

これは、ファイル名のスペルミスが原因でした〜/ sample_app/app/controllers/microposts_controller.rb(以前はmicroposts_contoller.rb)

22
8legged

これは、ネストされたディレクトリがネストされたディレクトリをマッピングしている場合にも発生する可能性があります。

_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内に、ブローカーの直接の子孫である必要があります。

4
juliangonzalez

routes.rbresourceの代わりにresourcesと入力しました

2
thedanotto

誰かが同様の問題で行き詰まった場合に役立ちます:

s in productsなしでタイプすると、コントローラーのスペルを間違えました==間違っていました:

違う:

get '/my_products', to: 'product#my_products'

正しい:

get '/my_products', to: 'products#my_products'
2
Ahmed Elkoussy

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
0
Elijah Murray

私のルートでは:すべての「get」に対して「#」の代わりに「/」があったため、「#」に変更しますget 'all' => 'storefront#all_items'

'categorical' => 'storefront#items_by_category'を取得します

「ブランディング」=>「storefront#items_by_brand」を取得

これですべてのエラーが修正されました。

0
Wei Liu