RESTful link_to: method => destroy в Rails 3, с откатом для пользователей с отключенным JavaScript - PullRequest
2 голосов
/ 04 сентября 2011

Есть ли простой способ RESTful иметь запасной URL для link_to с :method => :delete, который будет работать для людей, у которых отключен JavaScript?

Например, предположим, у меня есть список комментариев. Чтобы добавить ссылку для удаления комментария, я мог бы поставить:

<%= link_to "Delete", comment_path(comment.id), :method => :delete %>

Это даст ссылку с data-method="delete", которую мой драйвер ujs ​​(в моем случае jquery_ujs) превратит в запрос DELETE. Однако, когда javascript отключен, ссылка сопровождается запросом GET (как объявлено в документации), и мой контроллер по праву запутывается.

Есть ли хороший и простой способ решить эту проблему? Есть Railscast 77 , в котором показано одно решение, но для этого требуется очень много дополнительного кода и выбрасывается довольно элегантное решение :method => :delete. Я был бы согласен с тем, чтобы он выдавал ссылку на страницу подтверждения-удаления, когда JavaScript отключен.

Единственное решение, которое я могу придумать, - это использовать button_to на странице и UJS, чтобы заменить его на link_to. Это как-то не совсем правильно для меня, но, может, все в порядке? Есть еще идеи?

1 Ответ

1 голос
/ 04 сентября 2011

Лично мне не нравится идея сопоставления :delete с :get, это не RESTFul ... Решение, которое я использую, такое же, как и то, о котором вы думали, то есть button_toвместо link_to, и при необходимости я могу использовать CSS для стилизации кнопки, чтобы она выглядела как ссылка.

...