Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 将参数传递给grape实体模块_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4_Grape_Grape Entity - Fatal编程技术网

Ruby on rails 将参数传递给grape实体模块

Ruby on rails 将参数传递给grape实体模块,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,grape,grape-entity,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Grape,Grape Entity,项目的需求现在迫使我将参数传递给嵌套实体。 我有一个实体A和一个实体B,它们显示一些信息,需要系统上的A标识符来构建它们 module Services module Trips class TripPreviewResponseEntity < Grape::Entity expose :id expose :title expose :duration expose :total_price expose :description expose

项目的需求现在迫使我将参数传递给嵌套实体。 我有一个实体A和一个实体B,它们显示一些信息,需要系统上的A标识符来构建它们

module Services
 module Trips
  class TripPreviewResponseEntity < Grape::Entity
   expose :id
   expose :title
   expose :duration
   expose :total_price
   expose :description
   expose :details
   expose :destinations, using: Destinations::DestinationResponseEntity
  end
 end
end
在嵌套实体中,按以下方式使用trip_id参数选项:

expose :trip_info do |item,options|
   item.show(options[:trip_id])
end
但是说对象没有定义到实体中是失败的。有没有办法做到这一点? 有什么想法吗?

模块服务
模块跳闸
类TripPreviewResponseEntity
我不确定,但我认为在这种情况下您没有访问父对象的权限。此外,“expose”方法不会将额外的参数传递给“options”散列,因此不能这样做。但是请注意,您可以使用“present”方法将额外的参数传递给API中的“options”散列,以便使用这种方法传递父对象。但是,我认为它在返回数组的情况下不起作用。我使用的是present trips,:with=>trips::TripResponseEntity来表示包含一行代码的集合,这种方法禁止我使用额外的参数。不,Grape允许您这样做“当前行程,:with=>Trips::TripResponseEntity,:trip=>trip”。在您的行程或目的地实体内,您可以使用“选项[:trip]访问此参数“.想象一下如何使用模型内部的方法来实现它吗?这意味着,离开响应实体方式之外。In-trip:公开所有_目的地,当目的地json的格式与响应实体的格式相同时,模型有一个名为all_destinations的方法。在这一点上,我有旅行id。
expose :trip_info do |item,options|
   item.show(options[:trip_id])
end
module Services
 module Trips
  class TripPreviewResponseEntity < Grape::Entity
   expose :id
   expose :title
   expose :duration
   expose :total_price
   expose :description
   expose :details
   expose :destinations do |trip, _options| 
     DestinationResponseEntity.represent(trip.destinations, trip_id: trip.id)
   end
  end
 end
end