我有一个简单的模型:
class Receipt
include ActiveModel::Serialization
attr_accessor :products
end
我的控制器在做:
def create
respond_with receipt, :serializer => ReceiptSerializer
end
和序列化器:
class ReceiptSerializer < ActiveModel::Serializer
attributes :products
end
我得到了:
NoMethodError: undefined method `to_model' for #<Receipt:0x007f99bcb3b6d8>
然而,如果我将控制器更改为:
def create
json = ReceiptSerializer.new(receipt)
render :json => json
end
然后一切正常......发生了什么???
我使用的是active_model_serializers 0.9.3,但只是尝试了0.10.2,结果是一样的。
答案 0 :(得分:1)
在我阅读的所有文档和个人实施中,我使用render json:
代替respond_with
。
render json: receipt, serializer: ReceiptSerializer
我认为respond_with
已被删除,并且不再被视为最佳做法,但我找不到用于验证该声明的链接。
答案 1 :(得分:0)
我不完全确定,但在您的收据PORO中,您应该包括:ActiveModel::SerializerSupport
。
我无法确认这是否适用于active_model_serializers 0.10.2虽然