我已经查看了StackOverflow上的其他示例,我仍然需要帮助。
我的问题是使用o.get
函数按其ID检索单个帖子。
在调试时,我发现当我点击正确的链接时,我实际上正在点击此功能。但是,单击时会抛出406 Not Acceptable
错误。
我不确定这个问题是在角度方面,还是我的节目动作,也可以在下面找到。
以下是我服务的代码:
angular.module('hackerNews')
.factory('posts', ['$http',
function($http) {
var o = {
posts: []
};
o.getAll = function() {
return $http.get('/posts.json').success(function(data) {
angular.copy(data, o.posts);
});
};
o.create = function(post) {
return $http.post('/posts.json', post).success(function(data) {
o.posts.push(data);
});
};
o.upvote = function(post) {
return $http.put('/posts/' + post.id + '/upvote.json').success(function(data) {
post.upvotes += 1;
});
};
o.get = function(id) {
return $http.get('/posts/' + id).then(function(res) {
return res.data;
});
};
o.addComment = function(id, comment) {
return $http.post('/posts/' + id + '/comments.json', comment);
};
o.upvoteComment = function(post, comment) {
return $http.put('/posts/' + post.id + '/comments' + comment.id + '/upvote.json')
.success(function(data) {
comment.upvotes += 1;
});
};
return o;
}])
节目动作:
def show
respond_with Post.find(params[:id])
end
非常感谢任何帮助。
谢谢!
编辑:
以下是我的控制器中的内容:
以下是我在Application Controller中的内容,我有以下内容:
respond_to :json
大多数控制器如下:
class PostsController < ApplicationController
def index
respond_with Post.all
end
def create
respond_with Post.create(post_params)
end
def show
respond_with Post.find(params[:id])
end
def upvote
post = Post.find(params[:id])
post.increment!(:upvotes)
respond_with post
end
private
def post_params
params.require(:post).permit(:link, :title)
end
end
答案 0 :(得分:2)
您需要在控制器顶部添加respond_to
(包含您正在使用的格式列表)才能使respond_with
正常工作。您可以在此处详细了解:http://apidock.com/rails/ActionController/MimeResponds/respond_with
class PostsController < ApplicationController
respond_to :json
def index
respond_with Post.all
end
end
答案 1 :(得分:2)
我遇到了同样的问题。我尝试的解决方法是将“.json”添加到o.get函数中,如下所示:
o.get = function(id) {
return $http.get('/posts/' + id + '.json').then(function(res) {
return res.data;
});
};