gpt4 book ai didi

ruby-on-rails - 将变量从 Controller 传递到 Rails 中的序列化程序

转载 作者:行者123 更新时间:2023-12-04 16:07:00 26 4
gpt4 key购买 nike

我的 Controller 中有这段代码,用于获取从一个位置到另一个位置的距离(以米为单位):

range = Geocoder::Calculations.distance_between([lat,lng],[Model.location.lat,Model.location.lng])
rangeInMeters = range * 1000
rangeRounded = rangeInMeters.round
rangeRounded = rangeRounded / 100 * 100

我的序列化程序中有这段代码,可以为 json 响应提供更好的输出,如下所示:

class ModelSerializer < ActiveModel::Serializer
attributes :id, :name, :address, :range

def range
// something
end
end

如何让 rangeRounded 被 ModelSerializer 读取,所以在 json 响应中它会是这样的:

{
"id": 1,
"name": "Name A",
"address": "Address A",
"range": 500
},

最佳答案

如果我理解正确,您的模型有 location,其中有 latlng。并且您想在序列化程序方法中访问这些字段。

您可以使用对象访问这些字段。

RailsCasts - Active Model Serializers episode

#controller
def action
...
range = Geocoder::Calculations.distance_between([lat,lng],[Model.location.lat,Model.location.lng])
range_in_meters = range * 1000
range_rounded = range_in_meters.round
range_rounded = range_rounded / 100 * 100
...

render json: @model, serializer: ModelSerializer, range_rounded: range_rounded
end


#serializer
class ModelSerializer < ActiveModel::Serializer
attributes :id, :name, :address, :range
#point assosiations here (same as in model)

def range
puts @instance_options[:range_rounded]
end
end

关于ruby-on-rails - 将变量从 Controller 传递到 Rails 中的序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com