def index
markers = Marker.nearby(params[:lat], params[:lng], params[:radius])
end
def self.nearby(lat, lng, radius)
approved.near([lat.to_f, lng.to_f], radius, units: :km)
end
resources :markers
http://localhost:3000/markers?lat=11111111&lng=10101010101&radius=20
在下面的网址中,我们有3个参数(lat,lng和radius)。我希望半径值等于1(1 km)。因此,当用户打开(http://localhost:3000/markers?lat=11.111111&lng=104.1010101)时,它将获得radius = 1(http://localhost:3000/markers?lat=11.111111&lng=104.1010101&radius=1)的默认值。
答案 0 :(得分:2)
您可以使用fetch。
Marker.nearby(params[:lat], params[:lng], params.fetch(:radius, 1))
答案 1 :(得分:2)
我建议在模型方法中设置radius的默认值。即使您从控制台运行它或不使用请求参数,这也可确保一致的行为。
def self.nearby(lat, lng, radius)
approved.near([lat.to_f, lng.to_f], radius || 1, units: :km)
end
然后Marker.nearby(11.111, 104.010101, nil)
应该将radius值设置为1.请注意,这仅在radius为nil时才有效,对于空字符串将失败。如果这是一个问题,你应该检查礼物?像:
def self.nearby(lat, lng, radius)
radius = radius.present? ? radius : 1
approved.near([lat.to_f, lng.to_f], radius, units: :km)
end