module C80Map class MapAjaxController < ApplicationController def save_map_data Rails.logger.debug " params = #{params}" #{ "buildings"=>{"0"=>{"coords"=>["2496.5894495412845",...]}} } #{ "areas"=>{"0"=>{"coords"=>["2496.5894495412845",...]}} } # ЗДАНИЯ # в случае успеха - вернём id созданного здания, # тогда js обновит id и перенесёт здание из массива "новые здания" (drawn_buildings). # в случае неудачи - вернём описание ошибки # завершаем всё обновленным locations.json, который Map возьмёт # и положит в data result = { areas: [], buildings: [], updated_locations_json: nil } if params[:buildings].present? params[:buildings].each_key do |key| new_building_options = params[:buildings][key] # puts " new_building_options = #{new_building_options}" # puts " new_building_options[:coords] = #{new_building_options[:coords]}" b = Building.new({ coords: new_building_options[:coords].join(',') }) if b.valid? b.save result[:buildings] << { id: b.id, old_temp_id: new_building_options["id"] } else result[:buildings] << { id: new_building_options.id, status: 'error' } end end end if params[:areas].present? params[:areas].each_key do |key| new_area_options = params[:areas][key] # Rails.logger.debug " new_area_options = #{new_area_options}" # puts " new_area_options[:coords] = #{new_area_options[:coords]}" a = Area.new({ coords: new_area_options[:coords].join(','), building_id: new_area_options[:parent_building_id] }) if a.valid? a.save result[:areas] << { id: a.id, old_temp_id: new_area_options["id"] } else result[:areas] << { id: new_area_options.id, status: 'error' } end end end puts " result = #{result.to_json}" respond_to do |format| format.json { render json: result } end end end end