2012-03-01 72 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

相關問題