рубин на рельсах не соответствует маршруту действие: удалить
-
27-10-2019 - |
Вопрос
Я устанавливаю дружбу на веб-сайте RoR. Модель для него - user_id, friend_id и ожидающая (логическая). Я следил за RailsCast по большей части из-за дружбы, но внес в него некоторые изменения. Пока что у меня есть то, что когда вы переходите на страницу пользователя, вы можете щелкнуть «Запросить дружбу», и код использует:
родовое словоЭто вызывает метод create в контроллере Friendships. Он автоматически устанавливает для ожидания значение true. Сейчас я хочу иметь ссылку на Принять, которая просто превратилась бы в ожидание в false. Итак, я пытаюсь настроить его как
родовое словоНа самом деле я не хочу переходить на страницу редактирования, потому что ему просто нужно установить это логическое значение в false, поэтому я хочу вызвать обновление напрямую. Но когда я запускаю эту страницу, я получаю сообщение об ошибке:
родовое словоНе понимаю почему. Я не вызываю уничтожение (это будет с: method=>: delete), и на самом деле в контроллере Friendship есть метод уничтожения.
Ресурсы настроены следующим образом:
родовое словоИ пути от выполнения "rake routes":
родовое словоЛюбая помощь будет принята с благодарностью. Пожалуйста, дайте мне знать, если вам потребуется дополнительная информация.
Спасибо.
Решение
Путь, который существует в соответствии с маршрутами рейка
родовое словоМетод, который вы используете, помещен, но вы не предоставляете ': id'.
В зависимости от того, что вы пытаетесь сделать, есть два решения:
- Измените метод получения - это укажет вам на новое действие.
- Добавьте: id в свой конструктор URL - это укажет вам на действие обновления.
Ваш код склоняется ко второму, но я думаю, что если вы хотите создать новую дружбу, первое будет лучше.
Другие советы
Я не понимаю, почему вспомогательный URL-адрес сопоставляется с действием уничтожения.Однако существует более простая проблема: user_friendship_path
ожидает params :user_id
и :id
, а не :friend_id
.