如果您按照Bart Jedrocha的建議並使用jbuilder(默認情況下會添加它),那麼respond_*
方法調用就不再需要了。以下是我測試Android應用的一個簡單API。
# controllers/api/posts_controller.rb
module Api
class PostsController < ApplicationController
protect_from_forgery with: :null_session
def index
@posts = Post.where(query_params)
.page(page_params[:page])
.per(page_params[:page_size])
end
private
def page_params
params.permit(:page, :page_size)
end
def query_params
params.permit(:post_id, :title, :image_url)
end
end
end
# routes.rb
namespace :api , defaults: { format: :json } do
resources :posts
end
json.array!(@posts) do |post|
json.id post.id
json.title post.title
json.image_url post.image_url
end