2014-02-12 3 views
0

У меня модельрельс 4 координат не сохраняется

class Building 
    include Mongoid::Document 
    include Geocoder::Model::Mongoid 

    field :address,   :type => String, :default => ""    
    field :location,   :type => Array, spacial: {lat: :latitude, lng: :longitude, return_array: true } 

    ## Building index 
    index({location: "2d"}) 

    def latitude 
    location[1] 
    end 

    def longitude 
    location[0] 
    end 

    def latitude=(lat) 
    location[1] = lat 
    end 

    def longitude=(lng) 
    location[0] = lng 
    end 
end 

эту форму в представлении

= f.text_field :latitude 
= f.text_field :longitude 

и это контроллер

... 
def create 
    @building = Building.new(building_params) 

    respond_to do |format| 
    if @building.save 
     format.html { redirect_to @building, notice: 'Building was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @building } 
    else 
     format.html { render action: 'new' } 
     format.json { render json: @building.errors, status: :unprocessable_entity } 
    end 
    end 
end 

private 
    def building_params 
    params.require(:building).permit(:address, :latitude, :longitude) 
    end 
... 

Широта и долгота заполняются в форме, но когда я изменяю значение и сохраняю его, он не работает, даже другое поле, подобное адресу, изменяется в базе данных. Но это безотказно работает в консоли

> b = Building.first 
> b.latitude = -7.27094221115 
> b.save 
=> true 
+0

что-то вроде этого? https://gist.github.com/spondb/8953622 – spondbob

+0

Мне нужен вводный текст для ввода lat и lng вручную – spondbob

ответ

0

я думаю, что проблема на params, от формы у вас есть string широты и долготы, но необходимо float.

+0

, где я должен его анализировать, чтобы плавать? – spondbob

+0

try rebuild 'params' –

+0

' location [1] = lat.to_f' и 'location [0] = lng.to_f' не работает – spondbob

Смежные вопросы