Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用活动模型序列化程序定制json响应?_Ruby On Rails_Json_Api_Serialization_Active Model Serializers - Fatal编程技术网

Ruby on rails 如何使用活动模型序列化程序定制json响应?

Ruby on rails 如何使用活动模型序列化程序定制json响应?,ruby-on-rails,json,api,serialization,active-model-serializers,Ruby On Rails,Json,Api,Serialization,Active Model Serializers,我有一个API,构建在Rails 4.2.6上,使用活动模型序列化程序0.10.0。虽然ams很棒,但我想返回一个不代表表中列的键和值。API用于创建一封信,我需要返回用户可以在其中找到该信的url。大致如下: https://{DOMAIN}.com/letters/{LETTER.ID} 我是以某种方式修改序列化程序来实现这一点,还是呈现一些包含序列化程序信息的自定义JSON?我已经检查了一些与自定义JSON输出有关的其他问题,但它们没有专门讨论这个问题 编辑 我在下面尝试了你的方法,@m

我有一个API,构建在Rails 4.2.6上,使用活动模型序列化程序0.10.0。虽然ams很棒,但我想返回一个不代表表中列的键和值。API用于创建一封信,我需要返回用户可以在其中找到该信的url。大致如下:

https://{DOMAIN}.com/letters/{LETTER.ID}
我是以某种方式修改序列化程序来实现这一点,还是呈现一些包含序列化程序信息的自定义JSON?我已经检查了一些与自定义JSON输出有关的其他问题,但它们没有专门讨论这个问题

编辑

我在下面尝试了你的方法,@max,虽然我不确定这是否完全是你的意思。以下是我添加到序列化程序中的内容:

attributes :id, :url, :date_created, etc...
def url
    "https://{www.example.com/previewpdf/mailings/#{id}"
end
我尝试了这两种方法,并使用self.id,但都返回了一个“undefined method'id'”错误,所以我将继续插入

编辑#2 我改为使用:id而不是id,这使得未定义的方法错误消失了,但url在JSON中显示为

https://www.example.com/pdfpreview?SubOrderId=id
当我需要最后一部分来读取SubOrderId=28291,或者无论创建的邮件的id是什么

编辑


这仍然困扰着我,有人知道如何在自定义字符串响应中包含id键的实际值吗?

如果存在与属性同名的方法,序列化程序将调用该方法,而不是直接从正在序列化的对象获取属性

class FooSerializer < ActiveModel::Serializer
  attributes :bar, :url
  def url
    something_url(object)
  end
end

如果存在与属性同名的方法,序列化程序将调用该方法,而不是直接从正在序列化的对象获取属性

class FooSerializer < ActiveModel::Serializer
  attributes :bar, :url
  def url
    something_url(object)
  end
end