2012-03-01 89 views
2

使用google maps API和rails 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”)。但有一个错误:

类型错误在BusinessesController#updatemap 不能转换成符号整数 (错误的线是@ business.latitude =参数([:业务] [:纬度])线路)

我也试图与

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

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

回答

3

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

+0

不幸的是有同样的错误。这里是PARAMS哈希信息: – user929062 2012-03-01 14:24:25

+0

{ “UTF-8”=> “✓”, “authenticity_token”=> “Vc9QPHBQjnftzfzutfNpOyftX + eDVoFjUSzVs9M =”, “业务”=> { “纬度”=> “44.976565607846”, “经度”=> “8.89413124999999”}, “提交”=> “保存”, “ID”=> “1”} – user929062 2012-03-01 14:25:20

+0

顺便说一句:还to_s.to_f或只是.to_f给了我同样的错误消息。 – user929062 2012-03-01 14:28:12

相关问题