1

我是 Rails 框架的初学者,所以请原谅我的幼稚问题。我的前端有一个google.maps.Data.MultiPolygon对象,我想将它保存在我的数据库中。每次用户搜索时,该表searches都会创建一个新条目,其中包含不同的列,我在其中添加了另一列 datatype :geometry,当用户在特定搜索中绘制多边形时,该列将更新。所以我们需要更新数据库中的一个搜索条目,我正在使用put调用。我无法google.maps.Data.MultiPolygons在 put 调用上发送整个对象,因为$.params()无法序列化对象(这个问题与这里面临的问题相同)。

var polygons = new google.maps.Data.MultiPolygon([polygon]);
var search_params = $.param({search: $.extend(this.state.search, {user_id: Request.user_id, search_type: search_type})});
Request.put('searches/'+this.state.search['id'], search_params, function(){});

Uncaught TypeError: Cannot read property 'lat' of undefined(…)

所以,我需要发送一组位置对象。是否有特定格式可以将这个位置对象数组直接转换为geometry更新函数上的对象?这是在 ruby​​ 中搜索更新时调用的更新函数:

def update
    search = Search.find(params[:id])
    if search.update_attributes(search_params)
      render :json => {:recent => search}, :status => 200
    else
      render :json => {:error => "Could not update search."}, :status => 422
    end
  end

search_params 是:

def search_params
      params.require(:search).permit(
        :name,
        :user_id,
        :q,
        :drawn_polygons #This is the column I want to be updated with geometry object
      )
    end

:drawn_polygons => RGeo::Geos::CAPIMultiPolygonImpl工作吗?如果是,我需要提供什么格式的:drawn_polygons对象?

或者

我需要将其:drawn_polygons作为坐标列表,并将其更改为RGeo::Geos::CAPIMultiPolygonImpl更新函数内部的一个?如果是这样,该怎么做?

def update
    search = Search.find(params[:id])
    search_parameters = search_params
    drawn_polygons = JSON.parse(URI.decode(search_parameters[:drawn_polygons]))
    # Some code to change the search_params[:drawn_polygons] to geometry object, specifically RGeo::Geos::CAPIMultiPolygonImpl
    search_parameters(:drawn_polygons) = drawn_polygons
    if search.update_attributes(search_parameters)
      render :json => {:recent => search}, :status => 200
    else
      render :json => {:error => "Could not update search."}, :status => 422
    end
  end
4

0 回答 0