使用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])
...
但错误是一样的。导致错误的原因是什么?如何纠正错误?
答案 0 :(得分:3)
您正在撰写params([:business][:latitude])
而不是params[:business][:latitude]
。这意味着[:business]
实际上是self
上的方法调用,而不是params
。据推测,此代码所属的类具有[]
方法,但它需要整数而不是:business
。