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
これは、ファイル名のスペルミスが原因でした〜/ sample_app/app/controllers/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
と入力しました
誰かが同様の問題で行き詰まった場合に役立ちます:
s in productsなしでタイプすると、コントローラーのスペルを間違えました==間違っていました:
違う:
get '/my_products', to: 'product#my_products'
正しい:
get '/my_products', to: 'products#my_products'
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
私のルートでは:すべての「get」に対して「#」の代わりに「/」があったため、「#」に変更しますget 'all' => 'storefront#all_items'
'categorical' => 'storefront#items_by_category'を取得します
「ブランディング」=>「storefront#items_by_brand」を取得
これですべてのエラーが修正されました。