2010-11-08 8 views
10

Je reçois une erreur lorsque j'essaie d'accéder aux utilisateurs # afficher la page via une route nommée (http: // localhost: 3000/profile /) ... sinon je n'ai pas d'erreur quand j'essaye d'y accéder avec l'URL standard (http: // localhost: 3000/users/current). Si je rattrape les routes, les routes semblent correctes et comme cela fonctionne avec l'url standard, je n'ai vraiment aucune idée de la raison pour laquelle je reçois l'erreur No roads matches. Pourquoi essayer de trouver une route correspondant à une action «détruire» alors que je n'essaie même pas d'y accéder?Aucune route ne correspond {: action => "destroy",: controller => "users"}

Starcast::Application.routes.draw do 

    match "login" => 'user_sessions#new', :as => :login 
    match "logout" => 'user_sessions#destroy', :as => :logout 
    resources :user_sessions 

    match "profile" => 'users#show' 
    resources :users 

    resources :casters 
    resources :casts 
    resources :orders 

    root :to => "home#index" 

end 

erreur que je reçois:

ActionView::Template::Error (No route matches {:action=>"edit", :controller=>"users"}): 
    1: <% title "Welcome #{@user.username}" %> 
    2: 
    3: <%= link_to "Edit your profil", edit_user_path %> 
    4: 
    5: <% has_role? :caster do %> 
    6: <% if @user.caster %> 
    app/views/users/show.html.erb:3:in `_app_views_users_show_html_erb___2116234531537545622_2170017780__3613739707062673465' 
+1

Editer/afficher/détruire les chemins nécessitent un paramètre id ... ie edit_user_path (current_user.id) ... Si vous ne voulez pas le faire de cette façon, vous devrez faire en sorte que vos routes utilisent resource: user (au lieu de ressources: utilisateur) ce qui causera beaucoup de maux de tête plus tard sur la route si vous ne le faites pas correctement. – jenjenut233

+0

Tks pourriez-vous l'écrire comme une réponse, donc je peux le confirmer, tks beaucoup! – plehoux

Répondre

24

Modifier/chemins Afficher/détruire/mise à jour nécessitent un paramètre id ... ie edit_user_path (current_user.id) ... Si vous ne voulez pas faites-le de cette façon, vous devrez faire en sorte que vos routes utilisent resource: user (au lieu de resources: user) ce qui causera beaucoup de maux de tête plus tard si vous ne le faites pas correctement.