Не найдено ни одного маршрута {: action => "destroy",: controller => "users"} - PullRequest
10 голосов
/ 08 ноября 2010

Я получаю сообщение об ошибке, когда пытаюсь получить доступ к пользователям # показать страницу через именованный маршрут (http://localhost:3000/profile/) ... в противном случае у меня не возникает ошибки при попытке доступа к нему по стандартному URL-адресу (http://localhost:3000/users/current). Если яRake Routes I Routes кажется правильным, и, поскольку он работает со стандартным URL-адресом, у меня действительно нет понятия, почему я получаю сообщение об отсутствии совпадений с маршрутом.

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 Ответ

25 голосов
/ 30 ноября 2010

Для редактирования / показа / уничтожения / обновления пути требуется параметр id ... т.е. edit_user_path (current_user.id) ... Если вы не хотите делать это таким образом, вам нужно, чтобы ваши маршруты использовали ресурс:пользователь (вместо resources: user), который потом вызовет много головной боли, если вы не сделаете это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...