0

지오 코더를 사용하여 사용자가 입력 한 레스토랑의 주어진 주소에 위도와 경도를 채우려고합니다. 내가 위도와 경도를 포함하는 레스토랑 PARAMS 업데이트되었습니다#show보기의 NoMethodError. 정의되지 않은 메소드 '위도'. 위도와 경도를 가져올 지오 코더

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

: 나는 실행했습니다

NoMethodError in Restaurants#show 

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

: 내 쇼 페이지는 나에게 다음과 같은 오류를주고있다.

쇼 파일의 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

당신 잘못된 이전을 했으므로 :

  • 실행 rake db:rollback - 다시 돌아가서 DB를 정리하십시오.
  • rails g migration AddLatitudeAndLongitudeToRestaurants latitude:float longitude:float - 적절한 이전 (보석 문서로 인해 은 기존 모델에 새 열을 추가해야하며 DB에는 별개의 새 테이블을 작성하지 말아야합니다 ( ).
  • 실행 rake db:migrate.
+0

고맙습니다 - 레스토랑과 연결된 다른 매개 변수 (주소, 전화 번호 등)를 롤백 할 것인가? 또는 마지막으로 마이그레이션 만합니까? – jpn

+0

잘못된 마이그레이션 (Geo 사용)이 마지막 마이그레이션 인 경우'rake db : rollback STEP = 1'을 실행하여 이전에 수행했던 마지막 마이그레이션 만 취소 할 수 있습니다. – RedZagogulin

+0

또한 지오 코더 젬을 더 잘 이해하려면 [this] (http://railscasts.com/episodes/273-geocoder?view=asciicast)를 읽어보십시오. – RedZagogulin