0

Geocode Ruby Gem を使用して、ユーザーが入力した zip/country を適切にフォーマットされた場所 (例: Los Angeles、CA、USA) に変換しました。また、将来的にはジオコーディングを使用したいと考えています (フォーマットをきれいにするのになぜそんなに手間がかかるのか疑問に思われる場合に備えて)

列「アドレス」をユーザー データベースに移行しました。現在、ジオコーディングに行き詰まっており、ユーザーデータベースで列を移行するのではなく、データベースに場所フォルダーを作成しなかったためかどうかわかりません。

ルーティング エラーが発生しました: undefined method `geocoded_by' for #

全くの初心者なので意味不明だったらすみません。

class Location < ActiveRecord::Base
  attr_accessible :address, :latitude, :longitude

 geocoded_by :full_address
 after_validation :geocode, :if => :address_changed? 
end

これが私のコントローラーです:

def full_address 
  @user = User.find(params[:address])
  Geocode.serach("@user")
end 

location.rb を次のように変更します。

class Location < ActiveRecord::Base
extend ::Geocoder::Model::ActiveRecord 

  attr_accessible :address, :latitude, :longitude

  geocoded_by :address_for_geocode 
  reverse_geocoded_by :latitude, :longitude 
end

次のエラーが発生します。

Routing Error

uninitialized constant Location::Geocoder

Try running rake routes for more information on available routes. 
4

2 に答える 2

1

コメントで提案するのは難しいので、回答で行います。長すぎる場合はご容赦ください。反対票を投じないでください。最後に削除または編集します。それが本当の答えであるかどうかに依存します。

コードで何をどのように変更するかを理解していないため、Routing Error が発生しています。

初め

class Location < ActiveRecord::Base

  attr_accessible :address, :latitude, :longitude
  # comment this out! => Geocoder.search("New York, NY, USA")
end

コントローラーメソッドで、実行してみてください

def full_address 
  @user = User.find(params[:address])
  render :text => Geocoder.search("New York, NY, USA").inspect.to_s
end 

エラー (gem がアプリにロードされていない場合) または何らかの結果が返されます。

他のことを試す前に、これを明確にしましょう。

aaplication を再度実行し、そのルートを実行してfull_addressコントローラ アクションを実行します

ところで、レールコンソールですべて試すことができます

/path/to/project# レール c

irb> Geocoder.search("ニューヨーク、ニューヨーク、アメリカ")

==更新===

ロケーションモデルにジオコーダーを含めてみてください

class Location < ActiveRecord::Base
  extend ::Geocoder::Model::ActiveRecord

  geocoded_by :address_for_geocode
  reverse_geocoded_by :latitude, :longitude
end

git リポジトリでソース コードを確認したところ、ActivRecord::Base を拡張していないため、手動で行う必要があります!!!

于 2012-05-01T21:13:41.820 に答える