2010-11-08 13 views
10

Recibo un error cuando intento acceder a los usuarios # mostrar página a través de una ruta con nombre (http: // localhost: 3000/profile /) ... de lo contrario no tengo ningún error cuando intento acceder a él con la url estándar (http: // localhost: 3000/users/current). Si rastrear rutas I rutas parece correcto y ya que funciona con url estándar, realmente no tengo idea de por qué me sale el error No coincide con la ruta. ¿Cuándo intentar encontrar la coincidencia de ruta para la acción 'destruir' cuando ni siquiera estoy intentando acceder a ella?No coincide la ruta {: acción => "destruir",: controlador => "usuarios"}

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 

error que consigo:

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

Editar/mostrar/destruir rutas requiere un parámetro de id ... es decir, edit_user_path (current_user.id) ... Si no quieres hacerlo de esa manera, necesitarás hacer que tus rutas usen resource: user (en lugar de recursos: usuario) que causará muchos dolores de cabeza más adelante en el futuro si no lo haces bien. – jenjenut233

+0

Tks podría escribirlo como una respuesta, así que puedo confirmarlo, ¡mucho! – plehoux

Respuesta

24

Editar/show/destruir/rutas de actualización requieren un parámetro id ... es decir edit_user_path (current_user.id) ... Si no desea hazlo de esa manera necesitarás hacer que tus rutas usen el recurso: usuario (en lugar de recursos: usuario) lo que te causará muchos dolores de cabeza más adelante si no lo haces bien.

Cuestiones relacionadas