我只是想知道Rails如何使用JSON中的activemodel-serializer呈现模型对象。
我安装了activemodel-serializer,但输出有所不同。

理想的是这样的:

"products": [
  {
    "id": 1,
    "title": "Digital Portable System",

  },
  {
    "id": 2,
    "title": "Plasma TV",
  }

]

但是到目前为止,我得到的是:
ruby-on-rails - 在Rails中使用ActiveModel序列化器进行JSON渲染-LMLPHP

我的代码很简单;
class Api::V1::ProductsController < ApplicationController
  before_action :authenticate_with_token!, only: [:create, :update, :destroy]
  respond_to :json

  def index
    respond_with Product.all
  end

  def show
    respond_with Product.find(params[:id])
  end

  def create
    product = current_user.products.build(product_params)
    if product.save
      render json: product, status: 201, location: [:api, product]
    else
      render json: { errors: product.errors }, status: 422
    end
  end

  def update
    product = current_user.products.find(params[:id])
    if product.update(product_params)
      render json: product, status: 200, location: [:api, product]
    else
      render json: { errors: product.errors }, status: 422
    end
  end

  def destroy
    product = current_user.products.find(params[:id])
    product.destroy
    head 204
  end

  private

    def product_params
      params.require(:product).permit(:title, :price, :published)
    end

end

最佳答案

产品总监

def index
   render json: Product.all, each_serializer: ProductsSerializer, root: false
end
产品序列化器-app/serializers/products_serializer.rb
class ProductsSerializer < ActiveModel::Serializer
  attributes :id, :title

end

09-11 21:19