У меня возникли проблемы с маршрутизацией кнопки, чтобы она вызывала действие в контроллере. Чтобы быть более точным, у меня есть эта линияbutton_to path routing in Rails
delete 'destroy/:id', to: 'users#admin_destroy'
в моем файле маршрута, и эта линия
%= button_to 'Destroy', destroy_path(user), data: { confirm: 'Are you sure?' } %>
в представлении.
Проблема заключается в том, что страница обрабатывает метод destroy_path как метод, и я не понимаю, какой должен быть правильный синтаксис. Что я недопонимаю?
Кроме того, я первоначально пытался получить эту работу как link_to, но я узнал, что это должно быть зарезервировано для запросов GET. Однако мне не нравится, как выглядит button_to, и мне интересно, есть ли способ сделать это как GET, чтобы вместо этого использовать link_to.
Сообщение об ошибке будет полезно. Как вы заполняете 'user' (если это' @ user')? В строке маршрутов route.rb нет упоминания о пути url_helper, поэтому я не уверен, что вы можете использовать 'destroy_path', не связывая его с маршрутом. Каков результат «рейк-маршрутов»? – JTG
И вы не должны использовать link_to/GET для действия, которое может изменить базу данных. Не вдаваясь слишком много в последствия для безопасности или как боты ищут сайт или идемпотентные действия, это действительно не рекомендуется, и вы будете лучше подготовлены к тому, чтобы узнать, как это сделать с правильным HTTP-глаголом и изменить внешний вид кнопки с помощью CSS. – JTG
Спасибо за ответ! Я называю это '<% = render: partial => 'users/user',: collection => users%' в _user_list.html.erb (исходная строка destroy_path находится в _user.html.erb). Я бы предпочел не перечислять все маршруты рейка, так как он довольно большой, но я говорю, что я думаю, что destroy_path - это не то, что нужно связать с маршрутом уничтожения - я просто не знаю, что правый один есть. В настоящее время страница считает, что destroy_path - это метод и не знает, как его определить (поскольку это не метод, я просто догадался о синтаксисе маршрута). –