ActionController::UrlGenerationError 没有路线匹配

ActionController::UrlGenerationError no route matches

我对 Rails 还是很陌生,但似乎无法掌握这条路线

show.html.erb

<%= link_to "up", vote_movie_review_path(@review, type: "up"), method: "post" %>

rake 路线

vote_movie_review POST   /movies/:movie_id/reviews/:id/vote(.:format) reviews#vote  

routes.rb

Rails.application.routes.draw do

devise_for :users
resources :movies do 
  resources :reviews  do 
  member { post :vote }
  end
end

reviews_controller.rb

class ReviewsController < ApplicationController
before_action :set_reviews, only: [:show, :edit, :update, :destroy]
before_action :set_movie
before_action :authenticate_user!
respond_to :html

def index
  @reviews = Review.all
  respond_with(@reviews)
end

def show

end

def vote
  value - params[:type] == "up" ? 1 : -1
  @review = Review.find(params[:id])
  @review.add_evaluation(:votes, value, current_user)
  redirect_to :back, notice: "thanks for the vote"
end

您正在使用嵌套路由,因此您需要像这样 vote_movie_review_path(@movies, @review, type: "up").

传递电影对象 also.use

检查你的路线,它显示 /movies/:movie_id/reviews/:id/vote 而你调用它的方式将生成类似 /reviews/id 的方法 post 并且你没有为它定义任何路线。