2

Railsアプリでdelete link_toを作成するにはどうすればよいですか?

投票コントローラー

    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'

もちろん、それは機能していません。ルートで修正する必要があると確信していますが、方法がわかりません。

さらに情報が必要な場合は、コメントしてください。

ありがとう!

4

2 に答える 2

2

これを試して

= link_to('Delete', vote_path(vote.id),:method => :delete, :confirm => "Are you sure you want to delete?")  
OR       
= link_to('Delete',{controller: :votes, id: vote.id, action: :destroy}, confirm: "Are you sure you want to delete ?", method:  :delete)
于 2013-11-11T10:05:19.337 に答える
2

あなたの2番目link_toは、構文的には問題ありません。問題は、それvoteが定義されていないことです。ビューで次のことを試してください。

  %span= define_age(friend) == '' ? define_sex(friend) : define_sex(friend) + ', ' + define_age(friend)
  - vote = current_user.user_votes.find_by_recipient_uid(friend.uid).first
  - if vote
    = link_to('Delete', vote, 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'

また、質問に対するコメントで指摘したように、破棄アクションを整理する必要があります。また、作成アクションも同様の方法で疑わしい場合があります。私はそれを勉強していません。

于 2013-11-11T10:37:19.323 に答える