Я пытаюсь заставить свое приложение работать с действием DELETE без JavaScript.

Все работает, пока мой файл app / view / layout / application.html.haml содержит следующее:

!!! 5
%html

  %head
    %title My application
    = stylesheet_link_tag    'screen', :media => 'screen, print, projection'
    /[if IE]
      // CSS for IE
    = javascript_include_tag 'application'
    = csrf_meta_tags

  %body
    ...

Если я удалю инструкцию = javascript_include_tag 'application'. Я больше не могу удалить любую запись. Rails вместо этого выполняет действие SHOW.

Любая идея ?

0
Douglas 29 Янв 2013 в 16:07

2 ответа

Лучший ответ

Райан Бейтс (Ryan Bates) сделал хороший эпизод на RailsCasts по этому вопросу: Уничтожить без JavaScript.

Он просто предлагает добавить дополнительный маршрут члена GET, который приведет к тому же действию контроллера, когда JS отключен.

1
Alexey 29 Янв 2013 в 12:21

При написании HTML-форм поддерживаются только два метода: post и get. Если вы хотите использовать метод delete или put, вы должны использовать AJAX.

Именно поэтому большинство веб-сайтов используют простой почтовый запрос и используют специальный URL-адрес. например

POST /some-object/delete/

Или

POST /some-object/?action=delete

Даже последний черновик HTML5 не позволяет использовать какой-либо другой метод, кроме post или get: http://www.w3.org/html/wg/drafts/html/master/forms.html#attr-fs-method

Rails предоставляет polyfill для выполнения put и delete запросов. Я нахожу это тревожным, особенно потому, что код делает что-то совершенно другое, когда JavaScript отключен

3
bikeshedder 29 Янв 2013 в 12:13