RSpec销毁方法没有路由匹配
我正在尝试测试我的应用程序的创建方法,但出现以下错误:RSpec销毁方法没有路由匹配,rspec,ruby-on-rails-5,Rspec,Ruby On Rails 5,我正在尝试测试我的应用程序的创建方法,但出现以下错误: 1) RanksController POST #create when user is sign in creates rank Failure/Error: post :create, params: { user: user, movie: movie } ActionController::UrlGenerationError: No route matches {:action=>"create", :control
1) RanksController POST #create when user is sign in creates rank
Failure/Error: post :create, params: { user: user, movie: movie }
ActionController::UrlGenerationError:
No route matches {:action=>"create", :controller=>"ranks", :movie=>#<Movie
id: 1, title: "excepturi", description: "Vilicus crur volutabrum balbus cum
vulgaris statua...", released_at: "1998-03-22 00:00:00", avatar: nil,
genre_id: 1, created_at: "2019-01-15 14:45:10", updated_at: "2019-01-15
14:45:10">, :user=>#<User id: 1, email: "deja@ruel.co", created_at: "2019-
01-15 14:45:10", updated_at: "2019-01-15 14:45:10", phone_number: name: "">}
无线电控制器
class RanksController < ApplicationController
before_action :set_movie, only: %i[create destroy]
def create
Rank.create!(user: current_user, movie: @movie)
redirect_to @movie
end
def destroy
rank = @movie.ranks.find(params[:id])
rank.destroy!
redirect_to @movie
end
private
def set_movie
@movie = Movie.find(params[:movie_id])
end
end
在电影中显示动作\u controller.rb:
def show
@movie = Movie.find(params[:id])
@like = @movie.likes.find_by(user: current_user)
end
routes.rb
resources :movies, only: [:index, :show] do
resources :ranks, only: %i[create destroy]
member do
get :send_info
end
collection do
get :export
end
end
在web版本中,一切正常运行尝试传递id,而不是像下面这样的对象
post :create, params: { user_id: user.id, movie_id: movie.id }
我认为您根本不需要传递user
或user\u id
,因为您在创建操作中没有使用它<创建操作上的代码>当前用户应在块之前返回您登录的用户
resources :movies, only: [:index, :show] do
resources :ranks, only: %i[create destroy]
member do
get :send_info
end
collection do
get :export
end
end
post :create, params: { user_id: user.id, movie_id: movie.id }