Контроллер не может найти маршрут УДАЛЕНИЯ, но метод находится в контроллере

#http-delete #sinatra-activerecord

#http-delete #sinatra-activerecord

Вопрос:

Я создаю небольшое приложение sinatra, но столкнулся с проблемой. Моя функция контроллера для УДАЛЕНИЯ не найдена.

ApplicationController

 delete '/stories/:id' do
        if logged_in?
            @story = Story.find_by_id(params[:id])
        if  @story amp;amp; @story.user_id == current_user.id
            params.delete("_method")
            #binding.pry
            @story.destroy
            redirect to "/users/show"
        else
            redirect to "/session/login"
        end
    end
end
  

Действие формы УДАЛЕНИЯ

 Title: <%= @story.title %><br>
Story: <%= @story.content %><br>


<form action="/stories/<%= @story.id %>" method="POST"> 
<input type="hidden" id="hidden"  name="_method" value="DELETE">
<input type="submit" value="Remove Story">
</form>
  

Ошибка

 class ApplicationController
  delete '/stories/13' do
    "Hello World"
  end
end
  

Я также не могу проникнуть в этот маршрут

Ответ №1:

Вам нужно использовать следующее промежуточное программное обеспечение, которое будет переводить <input type="hidden" id="hidden" name="_method" value="DELETE"> в http delete

use Rack::MethodOverride