Как создать delete link_to в приложении Rails?Как создать ссылку для удаления
Голосов контроллер
class VotesController < ApplicationController
def destroy
@user = User.find(params[:id])
@user.votes.pluck(:author_uid).delete(current_user.uid)
end
end
Маршруты
votes_path GET /votes(.:format) votes#index
POST /votes(.:format) votes#create
new_vote_path GET /votes/new(.:format) votes#new
edit_vote_path GET /votes/:id/edit(.:format) votes#edit
vote_path GET /votes/:id(.:format) votes#show
PATCH /votes/:id(.:format) votes#update
PUT /votes/:id(.:format) votes#update
DELETE /votes/:id(.:format) votes#destroy
То, что я должен написать в link_to в виду?
Я попытался
= link_to 'Delete vote', {controller: "votes", action: "destroy"}, method: "delete"
и
= link_to 'Delete vote', vote_path(vote), method: :delete
пользователей/index.html.haml
- @vk.friends.get(uid: current_user.uid, fields: fields) do |friend|
%td.span
.centred
.image
.circled
= image_tag friend.photo_medium
%span= friend.uid
%span= link_to "#{friend.first_name} #{friend.last_name}", "http://vk.com/id#{friend.uid}", target: "_blank"
%span= define_age(friend) == '' ? define_sex(friend) : define_sex(friend) + ', ' + define_age(friend)
- if current_user.user_votes.pluck(:recipient_uid).include?(friend.uid)
= link_to('Delete',{controller: :votes, id: vote.id, action: :destroy}, confirm: "Are you sure you want to delete ?", method: :delete)
- else
= link_to 'Vote', {controller: "votes", action: "create", uid: friend.uid}, method: "post", confirm: "You sure", class: 'button medium pink'
Конечно, это не работает. Я уверен, что я должен исправить это с помощью маршрутов, но я не знаю, как это сделать.
Прокомментируйте, если вам нужна дополнительная информация.
Спасибо!
Я считаю, что ваш второй пример должен работать. Что вы получаете вместо этого? Какой HTML он производит, и какой запрос происходит при нажатии ссылки? – Chowlett
Выдает ошибку: неопределенная локальная переменная или метод 'vote 'для # <# <Класс: 0x331ec48>: 0x35c65b0> –
Ah. Скорее всего, вы неправильно использовали 'vote', когда вы имеете в виду' @ vote', или аналогичный. Можете ли вы разместить код контроллера, который создает представление, содержащее это 'link_to'? – Chowlett