Ответ 1
Поместите следующую строку в свой код.
use Rack::MethodOverride
Это поможет вам интерпретировать методы сообщений с параметром "_method
" со значением "delete
" как put.
Затем вы можете написать
delete '/user/:id' do |id|
Я пытаюсь разработать приложение RESTful Sinatra. Теперь я знаю, как отвечать на запрос удаления с помощью чего-то вроде
delete '/user/:id' do |id|
#do something in the model
end
Мне интересно, как я могу выполнить этот метод. Я не могу иметь ссылку, которая делает DELETE вместо GET, могу ли я?
Единственное решение, которое я нашел до сих пор, отправляет запрос DELETE через jQuery: Как отправить запрос PUT/DELETE в jQuery?
Я попытался изучить разные проекты RESTful Sinatra на github, но мои знания Ruby, вероятно, ограничены, чтобы понять, как они это делают.
Поместите следующую строку в свой код.
use Rack::MethodOverride
Это поможет вам интерпретировать методы сообщений с параметром "_method
" со значением "delete
" как put.
Затем вы можете написать
delete '/user/:id' do |id|
Я думаю, что это похоже на Rails. Вам нужно определить параметр _method params с "delete" и добавить его в вашу форму.
Когда вы публикуете POST с этими конкретными параметрами, вы делаете запрос DELETE в синатра.
Вроде:
<form action="/search" method="post">
<div style="margin:0;padding:0">
<input name="_method" type="hidden" value="delete" />
</div>
</form>
То же самое с методом PUT
Другой способ - использовать Curl:
curl -X DELETE http://host/user/1
%form{:action => "/note/delete/#{@note.id}", :method => "post"}
%input{:type => 'submit', :name=> "_method", :value => 'delete', :class => 'button'}
Вы также можете запустить маршрут удаления с помощью такой кнопки
см. также Вызовите Sinatra для удаления маршрута с помощью jQuery, как это сделать с помощью jQuery и JSON на передней панели и Sinatra на задней панели.