Можно иметь рабочий link_to без jQuery
Я нашел лучший процесс для создания работающей ссылки на удаление для ruby on rails без jQuery! Здесь я уже отвечаю: https://stackoverflow.com/a/67710994/14387700
Но чтобы упростить задачу, я снова пишу это здесь.
Нам нужно работать с 3 вещами:
- Добавление метода уничтожения в articles_controller.rb
- Настройка routes.rb
- Тег LINK_TO
Давайте начнем...
Добавление метода уничтожения в article_controller.rb
Сначала мы добавим def destroy ... end
в articles_controller.rb
, давайте откроем:
# app/controllers/articles_controller.rb
def destroy
@article = Article.find(params[:id])
@article.destroy
params[:id] = nil
flash[:notice] = "Art has been deleted"
redirect_to :action => :index
end
Здесь
- в первой строке мы вызываем переменную '@article', которая найдет и выберет параметры ID статьи в консоли rails из нашей базы данных. Потом,
- во 2-й строке переменная @article сделает команду уничтожения в консоли. тогда,
- в 3-й строке: параметры id будут удалены и
- в 4-й строке на странице приложения будет мигать уведомление. Искусство было удалено, а также будет отображаться в консоли, что в базе данных ничего не найдено.
- В 5-й строке, после завершения процесса уничтожения, мы будем перенаправлены на страницу индекса статьи.
Это главный фактор, который даст разрушительную команду. и заставьте link_to работать.
Настройка маршрутов.rb
НО ПОДОЖДИТЕ Нам нужны 2 маршрута для страницы уничтожения:
- Настройка протокола GET
- Настройка протокола DELETE
В маршрутах просто добавьте:
resources :articles, except: [:destroy] # this will add all get request links automatically except destroy link
post '/articles/new' => 'articles#create'
post '/articles/:id' => 'articles#update'
post '/articles/:id/edit' => 'articles#update' # this 3 lines are needed for other forms purpose
# we need this 2 lines for our delete link_to setup
delete 'articles/:id/delete' => 'articles#destroy', as: 'articles_delete'
get '/articles/:id/delete' => 'articles#destroy'
Здесь
2-я последняя строка объявляет метод DELETE,
- 'articles/:id/delete' will be the link structure in post link tag (known as: anchor tag in HTML) for every single post,
- '=›' указывает структуру ссылки на тег контроллера, которым является 'articles#destroy',
- затем мы определили текст пути, установив ** как: 'articles_delete'**, который мы будем использовать как: 'articles_delete_path' или 'articles_delete_url' в теге link_to.
потом
- в последней строке мы определили запрос на получение ссылки на удаление, которая даст нам рабочую ссылку, такую как https://2haas.com/articles/1/delete, за исключением /articles/1/destroy, что означает, что мы можем настроить нашу ссылку на удаление из эти 2 метода настройки с дополнительной информацией.
Последний самый приятный результат удаления
Желаемый тег link_to
мы можем использовать это, чтобы получить правильный тег удаления link_to, который будет работать.
<%= link_to 'Delete Article', articles_delete_path, method: :delete %>
<%= link_to 'Delete Article', articles_delete_url, method: :delete %>
<% obj.each do |post| %>
<%= link_to 'Delete Article', articles_delete_path(post), method: :delete %>
<% end %>
И это сделано, кроме jQuery
Спасибо за правильное прочтение этого ответа!
УДАЧНЫХ ПРОГРАММ
person
Abrar Jahin
schedule
27.05.2021