我正在研究Rails + AngularJS应用程序。为了访问我的应用程序的json响应,我必须在我的angular $ resource url中/something.json
而不是/something
有没有办法解决它?
路线
upvote_post_comment PUT /posts/:post_id/comments/:id/upvote(.:format) comments#upvote
post_comments POST /posts/:post_id/comments(.:format) comments#create
post_comment GET /posts/:post_id/comments/:id(.:format) comments#show
upvote_post PUT /posts/:id/upvote(.:format) posts#upvote
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
post GET /posts/:id(.:format) posts#show
GET / home#index
PostsController
class PostsController < ApplicationController
def index
@posts = Post.all
respond_to do |format|
format.json { render json: @posts }
end
end
end
Angular serviceProvider
angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
return $resource('/posts.json/:id', {id: "@id"})
}]);
答案 0 :(得分:1)
尝试将.json
添加到网址的末尾
angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
return $resource('/posts/' + id + '.json')
}]);
答案 1 :(得分:1)
在你的控制器中,只有当格式respond_do
被指定为json时,(.:format) in the routes
才会给出json响应。
您可以修改您的控制器 PostsController 以响应json无关紧要 - 格式是什么。
class PostsController < ApplicationController
def index
@posts = Post.all
render json: @posts
end
end
注意:在此之后,网址后的格式不重要(无论是.json,.xml,没有)。控制器的动作总是返回json。
答案 2 :(得分:1)
在routes.rb中设置默认格式
resources :posts, defaults: { format: :json }