ActionController::RoutingError(没有路由匹配 [DELETE]
ActionController::RoutingError (No route matches [DELETE]
我正在尝试使用 angularJS 和 rails 从我的数据库中删除一条记录,但是当删除操作触发时它显示错误。
在浏览器日志中显示
DELETE http://localhost:3000/movies.json/1 404 (Not Found)
并且在 rails 控制台中显示,
Started DELETE "/movies.json/1" for 127.0.0.1 at 2015-08-26 09:42:07 +0200
ActionController::RoutingError (No route matches [DELETE] "/movies.json/1"):
localhost:3000/movies.json
可用,所以我不确定我是否遗漏了路线中的某些内容,或者我没有正确定位记录的 ID。
在我的 routes.rb 我有,
resources :movies, only: [:create, :destroy, :index, :show]
这是 AngularJS 服务,
.factory('removeMovie', ['$http', function($http) {
return {
deleteMovie: function(movieId) {
var _movieId = parseInt(movieId);
return $http.delete('/movies.json/'+_movieId);
}
};
}])
和 AngularJS 控制器,
$scope.deleteMovie = function(movie){
removeMovie.deleteMovie(movie.id).then(function(sucessResponse){
//success callback
},function(errorResponse){
//Error callback
})
}
这是动作开始的模板,
%div{"ng-repeat" => "movie in movies"}
{{ movie.id }}
{{ movie.title }}
%a{"ng-click" => "deleteMovie(movie)"}delete
尽管我很确定这不是 AngularJS 问题而是 Rails 问题。这很奇怪,因为我的电影资源中有 destroy
,但错误提示没有路由匹配。
如果我从资源中删除 :create
,当我尝试创建一个新条目时,我会得到同样的错误(但是 POST 而不是删除)。
我猜路径应该是/movies/1.json
。
controller.json/id是URL的错误格式,应该是controller/id.json。您需要更改删除方法URL代:
.factory('removeMovie', ['$http', function($http) {
return {
deleteMovie: function(movieId) {
var _movieId = parseInt(movieId);
return $http.delete('/movies/'+_movieId + '.json');
}
};
我正在尝试使用 angularJS 和 rails 从我的数据库中删除一条记录,但是当删除操作触发时它显示错误。
在浏览器日志中显示
DELETE http://localhost:3000/movies.json/1 404 (Not Found)
并且在 rails 控制台中显示,
Started DELETE "/movies.json/1" for 127.0.0.1 at 2015-08-26 09:42:07 +0200
ActionController::RoutingError (No route matches [DELETE] "/movies.json/1"):
localhost:3000/movies.json
可用,所以我不确定我是否遗漏了路线中的某些内容,或者我没有正确定位记录的 ID。
在我的 routes.rb 我有,
resources :movies, only: [:create, :destroy, :index, :show]
这是 AngularJS 服务,
.factory('removeMovie', ['$http', function($http) {
return {
deleteMovie: function(movieId) {
var _movieId = parseInt(movieId);
return $http.delete('/movies.json/'+_movieId);
}
};
}])
和 AngularJS 控制器,
$scope.deleteMovie = function(movie){
removeMovie.deleteMovie(movie.id).then(function(sucessResponse){
//success callback
},function(errorResponse){
//Error callback
})
}
这是动作开始的模板,
%div{"ng-repeat" => "movie in movies"}
{{ movie.id }}
{{ movie.title }}
%a{"ng-click" => "deleteMovie(movie)"}delete
尽管我很确定这不是 AngularJS 问题而是 Rails 问题。这很奇怪,因为我的电影资源中有 destroy
,但错误提示没有路由匹配。
如果我从资源中删除 :create
,当我尝试创建一个新条目时,我会得到同样的错误(但是 POST 而不是删除)。
我猜路径应该是/movies/1.json
。
controller.json/id是URL的错误格式,应该是controller/id.json。您需要更改删除方法URL代:
.factory('removeMovie', ['$http', function($http) {
return {
deleteMovie: function(movieId) {
var _movieId = parseInt(movieId);
return $http.delete('/movies/'+_movieId + '.json');
}
};