Im работает над Rails + AngularJS. Чтобы получить доступ к json-ответу моего приложения, я должен /something.json
в своем угловом 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
Угловой сервисProvider
angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
return $resource('/posts.json/:id', {id: "@id"})
}]);
В вашем контроллере вы respond_do
чтобы дать ответ json только тогда, когда формат (.:format) in the routes
указан как json.
Вы можете изменить свой контроллер PostsController, чтобы ответить json no-matter - какой формат.
class PostsController < ApplicationController
def index
@posts = Post.all
render json: @posts
end
end
Примечание: после этого формат после URL не имеет значения (будь то.json,.xml, ничего). Действие контроллера wold всегда возвращает json.
Установите формат по умолчанию в routes.rb
resources :posts, defaults: { format: :json }
Попробуйте добавить .json
в конец URL-адреса.
angular.module('flapperNews')
.factory('posts', ['$resource', function($resource) {
return $resource('/posts/' + id + '.json')
}]);
.json
в своем приложении Angular?