WedX - журнал о программировании и компьютерных науках

Учебник Майкла Хартла, нет подходящих маршрутов

Я получаю эту ошибку:

Неудачи:

1) UsersController DELETE 'destroy' должен выйти из системы

Failure/Error: delete :destroy
ActionController::UrlGenerationError:
  No route matches {:controller=>"users", :action=>"destroy"}

Мой тест:

it "should sign a user out" do 
  test_sign_in(Factory(:user))
  delete :destroy
  expect(controller).to_not be_signed_in
  expect(response).to redirect_to(root_path)
end

Функция test_sign_in находится в помощнике спецификации:

защита test_sign_in (пользователь)

 controller.sign_in(user)

конец

Мои рейк-маршруты:

      Prefix Verb   URI Pattern               Controller#Action
sessions_new GET    /sessions/new(.:format)   sessions#new
   users GET    /users(.:format)          users#index
         POST   /users(.:format)          users#create
new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
    user GET    /users/:id(.:format)      users#show
         PATCH  /users/:id(.:format)      users#update
         PUT    /users/:id(.:format)      users#update
         DELETE /users/:id(.:format)      users#destroy
sessions POST   /sessions(.:format)       sessions#create
new_session GET    /sessions/new(.:format)   sessions#new
 session DELETE /sessions/:id(.:format)   sessions#destroy
    root GET    /                         pages#home
 contact GET    /contact(.:format)        pages#contact
   about GET    /about(.:format)          pages#about
    help GET    /help(.:format)           pages#help
  signup GET    /signup(.:format)         users#new
  signin GET    /signin(.:format)         sessions#new
 signout GET    /signout(.:format)        sessions#destroy
pages_home GET    /pages/home(.:format)     pages#home

Кто-нибудь знает, как я могу решить эту ошибку?


Ответы:


1

Ваш маршрут определяется как

DELETE /users/:id(.:format)      users#destroy

что означает, что маршрут ожидает что-то вроде

DELETE /users/4

Глядя на ваш тест, вы просто запрашиваете DELETE /users, это было получено из этого сообщения об ошибке:

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

Итак, вам нужно изменить свой тест, чтобы он обрабатывал :id часть маршрута. Это не проверено, но вы примерно ищете:

user = Factory(:user)
test_sign_in(user)
delete :destroy, id: user.id
19.03.2014
  • Я сделал это. Я получаю следующую ошибку: 1) UsersController DELETE 'destroy' должен вывести пользователя из системы Ошибка/ошибка: удалить :destroy, id: user.id AbstractController::ActionNotFound: Не удалось найти действие 'destroy' для UsersController Можете ли вы помочь мне с этим? 19.03.2014
  • На самом деле я просматривал свои маршруты, я следую инструкциям и думаю, что это маршрут, который я пытаюсь использовать: signout GET /signout(.:format) session#destroy 19.03.2014
  • Вы должны иметь возможность просто использовать: get :signout в этом случае. Ошибка Действие «уничтожить» не может быть найдено для UsersController означает, что внутри вашего UsersController нет действия для destroy. Хотя в этом есть смысл, верно? Поскольку ваше действие destroy находится внутри SessionsController, вам следует протестировать функцию выхода в спецификации для SessionsController, а не UsersController. Надеюсь, это поможет! 21.03.2014

  • 2

    оооо боже!! Я нашел ошибку. Я случайно написал код в файле users_controller_spec, и я должен сделать это в файле session_controller_spec. Спасибо Андреас за попытку помочь!

    19.03.2014
  • Извините, только что увидел эту запись после ввода этого ответа! 21.03.2014
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]