Ошибка Rails: невозможно преобразовать символ в целое число - PullRequest
2 голосов
/ 01 марта 2012

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

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

Карта обновления метода:

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

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

Ошибка типа в BuseriesController # updatemap не может преобразовать символ в целое число (строка ошибки - это строка @ business.latitude = params ([: business] [: latitude]))

Я тоже пробовал с

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

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

1 Ответ

3 голосов
/ 01 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...