Rails に関する Michael Hartl の優れたチュートリアルに取り組んでいますが、第 11 章の演習 7 で問題が発生しています。
この演習は次のとおりです。
/users/1/microposts がユーザー 1 のすべてのマイクロポストを表示するように、ネストされたルートを追加します (マイクロポスト コントローラーのインデックス アクションと対応するビューも追加する必要があります)。
routes.rb
ファイルを次のように変更することで、これを成功させました。
resources :users do
resources :microposts, :only => [:create, :destroy]
end
ブラウザーから /users/1/microposts を正常に呼び出すことができます。ただし、microposts_controller_spec.rb のほとんどのテストは壊れています。自動テストを実行すると、「ルートが一致しません」というエラーが表示されます。たとえば、最初のテストは次のようになります。
it "should deny access to 'create'" do
post :create
response.should redirect_to(signin_path)
end
次のエラーが発生するようになりました。
1) MicropostsController アクセス制御は「作成」へのアクセスを拒否する必要があります 失敗/エラー: post :create 一致するルートがありません {:controller=>"microposts", :action=>"create"}
チェックしたらrake routes
、次のエントリを見つけました。
user_microposts POST /users/:user_id/microposts(.:format) {:action=>"create", :controller=>"microposts"}
これは、ルートが存在することを示唆しています。
チュートリアルを完了しているときに、他の誰かがこの問題に遭遇しましたか? ネストされたルートを導入したら、spec ファイルに変更を加える必要がありますか? Rspec はネストされたルートで動作しますか?
ありがとう