2012-03-01 4 views
2

Использование API-карт google и рельсов 3.2.1 У меня есть страница, позволяющая перемещать маркер бизнеса на карте, чтобы исправить ее положение. Бизнес-модель имеет широту и долготу (среди прочих). Соответствующая часть:Ошибка Rails: невозможно преобразовать символ в целое

<%= form_for :business, :url => { :action => "updatemap" }, :id => 'updatebutton' do |f| %> 
    <%= f.hidden_field :latitude %> 
    <%= f.hidden_field :longitude %> 
    <br /> 
    <%= f.submit "Save" %> 
<% end %> 

Метод updatemap является:

def updatemap 
    @business = Business.find(params[:id]) 
    @business.latitude = params([:business][:latitude]) 
    @business.longitude = params([:business][:longitude]) 
    if @business.save! 
    redirect_to business_path(@business), :flash => { :success => "The business was updated!" } 
    else 
    render 'changemap', :flash => { :error => "An error occured." } 
    end 
end 

Запуск отладчика Params ([: бизнес] [: широта]) и Params ([: бизнес] [: долгота]) дают правильное значение новых координат карты (например, «45.273739» для широты). Но есть ошибка:

TypeError в BusinessesController # updatemap не может преобразовать символ в Integer (линия ошибки в @ business.latitude = PARAMS ([: бизнес] [: широта]) линия)

Я также попытался с

... 
if @business.update_attributes(params[:business]) 
... 

но ошибка та же. Что вызывает ошибку и как ее можно исправить?

ответ

3

Вы пишете params([:business][:latitude]), а не params[:business][:latitude]. Это означает, что [:business] фактически является вызовом метода на self, а не params. Предположительно, класс, в котором этот код является частью, имеет метод [], но он ожидает целое число, а не :business.

+0

К сожалению, та же ошибка. Вот PARAMS-хэш для информации: – user929062

+0

{ "utf8" => "✓", "authenticity_token" => "Vc9QPHBQjnftzfzutfNpOyftX + eDVoFjUSzVs9M =", "бизнес" => { "широта" => "44,976565607846", «longitude» => «8.89413124999999»}, «commit» => «Save», «id» => «1»} – user929062

+0

Кстати: также to_s.to_f или просто .to_f дает мне то же сообщение об ошибке. – user929062

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