#show视图中的NoMethodError。未定义的方法'纬度'。地理编码器得到拉特和长

时间:2014-07-14 18:45:38

标签: ruby-on-rails database-migration google-geocoder nomethoderror google-static-maps

我正在尝试使用Geocoder来填充用户输入的餐馆的给定地址的纬度和经度。我的展示页面给出了以下错误:

NoMethodError in Restaurants#show

undefined method `latitude' for #<Restaurant:...

我跑了:

$rails generate latlong migration latitude:float longitude:float
$rake db:migrate 

我更新了餐馆参数,包括纬度和经度。

show文件中引用url的部分如下所示:

<p>
<strong>Where's it at?</strong>
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=16&markers=#{@restaurant.latitude}%2C#{@restaurant.longitude}" %>

</p>

这是我的迁移文件:

class Latlong < ActiveRecord::Migration
  def change
    add_column :restaurants, :latitude, :float
    add_column :restaurants, :longitude, :float
  end
end

我的模型看起来像这样:

class Restaurant < ActiveRecord::Base

    mount_uploader :picture, PictureUploader
    mount_uploader :menu, MenuUploader 

    geocoded_by :address
    after_validation :geocode  

end 

1 个答案:

答案 0 :(得分:1)

你做错了迁移,所以:

  • 运行rake db:rollback - 返回并拥有干净的数据库。
  • 运行rails g migration AddLatitudeAndLongitudeToRestaurants latitude:float longitude:float - 正确迁移(由于您的gem文档) 必须向现有模型添加新列,而不是几乎创建 DB中的单独表和新表。
  • 运行rake db:migrate