Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No route matches {:action=>"destroy", :controller=>"users"}

I'm getting a error when I try to acces users#show page trough a named route (http://localhost:3000/profile/) ... otherwise I have no error when I try to access it with the standard url (http://localhost:3000/users/current). If I rake routes I routes seems right and since it works with standard url, I really have no clue why I get No route matchs error. When why trying to find route match for action 'destroy' when I'm not even trying to access it?

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 I get:

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'
like image 374
plehoux Avatar asked Nov 08 '10 15:11

plehoux


1 Answers

Edit/show/destroy/update paths require an id parameter ... i.e. edit_user_path(current_user.id) ... If you don't want to do it that way you'll need to make your routes use resource :user (instead of resources :user) which will cause lots of headache later down the road if you don't do it right.

like image 183
jenjenut233 Avatar answered Feb 05 '23 18:02

jenjenut233