2011-11-09 6 views
3

私は次のように起こっている:users_controller_specでルートマッチいいえ{:アクション=> "ショー"、:コントローラ=> "ユーザー"}エラー

RSpecのテスト:私のusers_controllerで

it "should redirect to the user show page" do 
    post :create, :user => @attr 
    response.should redirect_to(user_path(assigns(:user))) 
end 

を私は、次のしている:私のroutes.rbをで

def show 
    @user = User.find(params[:id]) 
    @title = @user.name 
end 

def create 
    @title = "Sign up" 
    @user = User.new(params[:user]) 
    if @user.save 
    redirect_to @user, :notice => "Signed Up!" 
    else 
    @title = "Sign up" 
    render "new" 
    end 
end 

私は、次のしている:

Psra::Application.routes.draw do 
    resources :users 
    resources :sessions 

    # Root Route 

    root :to => 'pages#home' 

    # Pages Routes 

    match '/contact', :to => 'pages#contact' 
    match '/about', :to => 'pages#about' 
    match '/help', :to => 'pages#help' 
    match '/signup', :to => 'users#new' 

    # Users Route 

    match '/signup', :to => 'users#new' 

    #Sessions Routes 
    get "logout" => "sessions#destroy", :as => "logout" 
    get "login" => "sessions#new", :as => "login" 

end 
私が間違ってやっているものに

1) UsersController POST 'create' success should redirect to the user show page 
    Failure/Error: response.should redirect_to(user_path(assigns(:user))) 
    ActionController::RoutingError: 
     No route matches {:action=>"show", :controller=>"users"} 
    # ./spec/controllers/users_controller_spec.rb:95:in `block (4 levels) in <top (required)>' 

任意のアイデア:

そして、ここでは私のすくい路線次のエラーで

 users GET /users(.:format)    {:action=>"index", :controller=>"users"} 
      POST /users(.:format)    {:action=>"create", :controller=>"users"} 
    new_user GET /users/new(.:format)   {:action=>"new", :controller=>"users"} 
    edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"} 
     user GET /users/:id(.:format)   {:action=>"show", :controller=>"users"} 
      PUT /users/:id(.:format)   {:action=>"update", :controller=>"users"} 
      DELETE /users/:id(.:format)   {:action=>"destroy", :controller=>"users"} 
    sessions GET /sessions(.:format)   {:action=>"index", :controller=>"sessions"} 
      POST /sessions(.:format)   {:action=>"create", :controller=>"sessions"} 
new_session GET /sessions/new(.:format)  {:action=>"new", :controller=>"sessions"} 
edit_session GET /sessions/:id/edit(.:format) {:action=>"edit", :controller=>"sessions"} 
    session GET /sessions/:id(.:format)  {:action=>"show", :controller=>"sessions"} 
      PUT /sessions/:id(.:format)  {:action=>"update", :controller=>"sessions"} 
      DELETE /sessions/:id(.:format)  {:action=>"destroy", :controller=>"sessions"} 
     root  /       {:controller=>"pages", :action=>"home"} 
    contact  /contact(.:format)   {:controller=>"pages", :action=>"contact"} 
     about  /about(.:format)    {:controller=>"pages", :action=>"about"} 
     help  /help(.:format)    {:controller=>"pages", :action=>"help"} 
     signup  /signup(.:format)   {:controller=>"users", :action=>"new"} 
        /signup(.:format)   {:controller=>"users", :action=>"new"} 
     logout GET /logout(.:format)   {:action=>"destroy", :controller=>"sessions"} 
     login GET /login(.:format)    {:action=>"new", :controller=>"sessions"} 

このすべての結果ですか?

+1

これはブラウザで動作しますか?テストからではありません – vladdruzh

+0

はい、ブラウザ内で動作します。 –

答えて

4

showアクションは、正しいページを取得するために必要なユーザー情報を取得していないようです。 assignsメソッドはインスタンス変数を作成するだけです。 user_pathコールには、コールを正しく機能させるために、ユーザーモックまたはオブジェクトが必要です。

+0

私の理解は、assignsが:userをとり、それをオブジェクトに変換することです。それは間違っていますか? –

+0

'assigns'は実際にオブジェクトを返しません。私が信じているのは問題の根源です。 –

関連する問題