Възможно е да имате работещ link_to без jQuery
Намерих най-добрия процес за създаване на работеща връзка за изтриване за ruby on rails без jQuery! Тук вече давам отговор: https://stackoverflow.com/a/67710994/14387700
Но за да улесня това, пиша това отново тук.
Трябва да работим с 3 неща:
- Добавяне на метод за унищожаване в articles_controller.rb
- Настройка на routes.rb
- LINK_TO етикет
Да започваме...
Добавяне на метод за унищожаване в articles_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 работещ.
Настройте routes.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'
Тук
Вторият последен ред декларира метода 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