Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 在Rails中,如何一次从多个不同的ActiveModelSerializer/模型返回模型数据?_Ruby On Rails_Json_Active Model Serializers - Fatal编程技术网

Ruby on rails 在Rails中,如何一次从多个不同的ActiveModelSerializer/模型返回模型数据?

Ruby on rails 在Rails中,如何一次从多个不同的ActiveModelSerializer/模型返回模型数据?,ruby-on-rails,json,active-model-serializers,Ruby On Rails,Json,Active Model Serializers,我有几个模特。让我们称它们为Widget和Gadget 我的Widget和Gadget索引如下所示 def index widgets = Widget.all if widgets respond_with widgets, each_serializer: Api::V1::WidgetSerializer else render json: { message: [t(:not_found_widget)] }, status: :n

我有几个模特。让我们称它们为Widget和Gadget

我的Widget和Gadget索引如下所示

def index
    widgets = Widget.all
    if widgets
        respond_with widgets, each_serializer: Api::V1::WidgetSerializer
    else
        render json: { message: [t(:not_found_widget)] }, status: :not_found
    end
end     

def index
    gadgets = Gadget.all
    if gadgets
        respond_with gadgets, each_serializer: Api::V1::GadgetSerializer
    else
        render json: { message: [t(:not_found_gadget)] }, status: :not_found
    end
end 
还有我的连载程序

class Api::V1::WidgetSerializer < ActiveModel::Serializer
  attributes :id, :desc
end

 class Api::V1::GadgetSerializer < ActiveModel::Serializer
  attributes :id, :desc
end
我怎样才能做到这一点。差不多

widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
 has_many :widgets
 has_many :gadgets
end

class CompositeSerializer < ActiveModel::Serializer
  attributes :id
  has_many :widgets
  has_many :gadgets
end

但是,这显然不起作用。

我能看到这一效果的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序

差不多

widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
 has_many :widgets
 has_many :gadgets
end

class CompositeSerializer < ActiveModel::Serializer
  attributes :id
  has_many :widgets
  has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序

差不多

widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
 has_many :widgets
 has_many :gadgets
end

class CompositeSerializer < ActiveModel::Serializer
  attributes :id
  has_many :widgets
  has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序

差不多

widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
 has_many :widgets
 has_many :gadgets
end

class CompositeSerializer < ActiveModel::Serializer
  attributes :id
  has_many :widgets
  has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序

差不多

widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
 has_many :widgets
 has_many :gadgets
end

class CompositeSerializer < ActiveModel::Serializer
  attributes :id
  has_many :widgets
  has_many :gadgets
end
class复合
序列化程序类不必与AR模型匹配。序列化程序类应该用作要生成的JSON的表示形式。在您的示例中,假设调用一个新的序列化程序
仪表板序列化程序
,然后您可以将
小部件
小部件
放在那里:

class DashboardSerializer < ActiveModel::Serializer
  self.root = false

  attributes :widgets, :gadgets

  def widgets
    Widget.all
  end

  def gadgets
    Gadget.all
  end
end
类DashboardSerializer序列化程序类不必与AR模型匹配。序列化程序类应该用作要生成的JSON的表示形式。在您的示例中,假设调用一个新的序列化程序
仪表板序列化程序
,然后您可以将
小部件
小部件
放在那里:

class DashboardSerializer < ActiveModel::Serializer
  self.root = false

  attributes :widgets, :gadgets

  def widgets
    Widget.all
  end

  def gadgets
    Gadget.all
  end
end
类DashboardSerializer序列化程序类不必与AR模型匹配。序列化程序类应该用作要生成的JSON的表示形式。在您的示例中,假设调用一个新的序列化程序
仪表板序列化程序
,然后您可以将
小部件
小部件
放在那里:

class DashboardSerializer < ActiveModel::Serializer
  self.root = false

  attributes :widgets, :gadgets

  def widgets
    Widget.all
  end

  def gadgets
    Gadget.all
  end
end
类DashboardSerializer序列化程序类不必与AR模型匹配。序列化程序类应该用作要生成的JSON的表示形式。在您的示例中,假设调用一个新的序列化程序
仪表板序列化程序
,然后您可以将
小部件
小部件
放在那里:

class DashboardSerializer < ActiveModel::Serializer
  self.root = false

  attributes :widgets, :gadgets

  def widgets
    Widget.all
  end

  def gadgets
    Gadget.all
  end
end
类DashboardSerializer有没有办法手动构建一个包含我想要的所有对象的大型json字符串并返回该字符串?(最好减去时间戳)有没有办法手动构建一个包含我想要的所有对象的大型json字符串并返回它?(最好减去时间戳)有没有办法手动构建一个包含我想要的所有对象的大型json字符串并返回它?(最好减去时间戳)有没有办法手动构建一个包含我想要的所有对象的大型json字符串并返回它?(最好减去时间戳)我有类似的情况,但有一个问题,我需要在类似ID模型的基础上获取数据。查找课程ID,但如何将ID从我的API传递到Serializer I有类似的情况,但有一个问题,我需要在类似ID模型的基础上获取数据。查找课程ID,但如何将ID从我的API传递到Serializer I有类似的情况,但有一个问题,我需要解决需要在类似ID模型的基础上获取数据。查找课程ID但如何将ID从我的API传递到序列化程序我有类似的情况,但有一个问题,我需要在类似ID模型的基础上获取数据。查找课程ID但如何将ID从我的API传递到序列化程序