没有路由匹配{:action =>“destroy”,:controller =>“users”}

时间:2010-11-08 15:20:23

标签: ruby-on-rails-3 routes

当我尝试访问用户时显示错误#show page通过命名路由(http:// localhost:3000 / profile /)...否则当我尝试访问它时我没有错误标准网址(http:// localhost:3000 / users / current)。如果我耙路线我的路线似乎是正确的,因为它适用于标准网址,我真的不知道为什么我得到无路由匹配错误。为什么当我甚至不想访问它时为什么试图寻找行动'毁灭'的路线匹配?

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

我得到错误:

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 个答案:

答案 0 :(得分:25)

编辑/显示/销毁/更新路径需要一个id参数...即edit_user_path(current_user.id)...如果你不想这样做,你需要让你的路由使用资源:用户(而不是资源:用户),如果你做得不对,将会引起很多人头疼。