Aucun itinéraire correspond à {:action=>“montrer”, :controller=>“utilisateurs”} Erreur
J'ai le texte suivant:
rspec test dans users_controller_spec:
it "should redirect to the user show page" do
post :create, :user => @attr
response.should redirect_to(user_path(assigns(:user)))
end
Dans mon users_controller j'ai le texte suivant:
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
Dans mes itinéraires.rb j'ai le texte suivant:
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
Et Voici mon râteau routes
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"}
Cette tous les résultats dans l'erreur suivante:
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)>'
Toutes les idées sur ce que je fais mal?
Est-ce de travailler à partir du navigateur? Pas de test
Oui, il fonctionne à l'intérieur du navigateur.
Oui, il fonctionne à l'intérieur du navigateur.
OriginalL'auteur Noah Clark | 2011-11-09
Vous devez vous connecter pour publier un commentaire.
Il ressemble pour moi que le
show
action n'est pas d'obtenir les informations de l'utilisateur, il doit obtenir la bonne page. Leassigns
méthode est la création d'une variable d'instance. Leuser_path
appel aurez besoin d'un Utilisateur se moquer ou un objet pour faire le travail correctement.assigns
ne retourne en fait un objet. Je crois que la racine du problème.OriginalL'auteur Vincent Agnello