2011-06-25 11 views
2

GETリクエストでアクションを表示する場合、このエラーが発生します。RoutingError in Rspec

1) ShopController GET 'show' should be successful 
    Failure/Error: get 'show', :id=>@shop.user.nickname 
    ActionController::RoutingError: 
     No route matches {:id=>"picardo", :controller=>"shop", :action=>"show"} 
    # ./spec/controllers/shop_controller_spec.rb:8:in `block (3 levels) in <top (required)>' 

私のルートは次のようになります。

#routes.rb 
    resources :shop, :only=>[:show] 

これは、コントローラの仕様です:あなたは、いくつかのレールのルールに従わなければならない

def show 
    @user = User.find(:first,:conditions=>{:nickname=>params[:id]}) 
    @shop = @user.shop 
    end 
+1

この上の任意の単語?私はこれも最も簡単な問題を抱えています。 –

答えて

0

#shop_controller_spec.rb 
    before(:each) do 
    @shop = Fabricate(:shop) 
    end 
    describe "GET 'show'" do 
    it "should be successful" do 
     get 'show', :id=>@shop.user.nickname 
     response.should be_success 
    end 
    end 

そしてTEHコントローラ。 一元的なリソースをお持ちの場合はresource :shopと記入し、複数のリソースをお持ちの場合はresources :shopsと記載してください。あなたはrake routesコマンドを実行して違いを見ることができます。

あなたはresources :shopと書いて、コントローラにShopsControllerという名前のコントローラがあると確信しているので、あなたのアプリケーションに存在しないShopControllerにリクエストを送信しました。別のレール規則は、コントローラを複数の形で指定し、単数形でモデル化することです。

それともルートでコントローラ名を記述します。resources :shop, :controller => 'shops'

関連する問題