0

コントローラーのアクションに問題があります - ビューで link_to を destroy アクションで呼び出すと、エラーが発生します:

ActionController::UrlGenerationError

No route matches {:controller=>"user_votes", :action=>"destroy", :recipient_uid=>2911238}

ルート:

App::Application.routes.draw do

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  resources :users
  resources :votes 
  resources :user_votes
  root 'main#home'

end

user_vote_controller:

class UserVotesController < ApplicationController

    def destroy
        @user_vote = UserVote.find_by(params[:recipient_uid])
        @user_vote.destroy
        redirect_to root_url
    end

end

ファイルを閲覧する:

 = link_to 'Delete', {controller: "user_votes", action: "destroy", recipient_uid: friend.uid}, method: "delete"

どこを間違えたのか教えてもらえますか?

ありがとう!

4

1 に答える 1

1

destroy 関数のリソース URL は、実際には「user_votes/:id」です。したがって:id、link_to ヘルパーを呼び出すときにパラメーターを渡す必要があります。

 = link_to 'Delete', {controller: "user_votes", action: "destroy", recipient_uid: friend.uid, id: some_id}, method: "delete"

some_id実際のリソース ID に置き換えます。

于 2013-11-11T17:32:20.160 に答える