Rails错误:无法将Symbol转换为Integer

时间:2012-03-01 14:17:56

标签: ruby-on-rails-3

使用google maps API和rails 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 %>

方法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([:business] [:latitude])和params([:business] [:longitude])给出新地图坐标的正确值(例如&#34; 45.273739&#34;为纬度)。但是有一个错误:

BusinessesController#updatemap中的TypeError 无法将符号转换为整数 (错误的行是@ business.latitude = params([:business] [:latitude])行)

我也试过

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

但错误是一样的。导致错误的原因是什么?如何纠正错误?

1 个答案:

答案 0 :(得分:3)

您正在撰写params([:business][:latitude])而不是params[:business][:latitude]。这意味着[:business]实际上是self上的方法调用,而不是params。据推测,此代码所属的类具有[]方法,但它需要整数而不是:business