我正在尝试使用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
答案 0 :(得分:1)
你做错了迁移,所以:
rake db:rollback
- 返回并拥有干净的数据库。 rails g migration AddLatitudeAndLongitudeToRestaurants latitude:float
longitude:float
- 正确迁移(由于您的gem文档)
必须向现有模型添加新列,而不是几乎创建
DB中的单独表和新表。 rake db:migrate
。