Web サイトの訪問者の IP アドレスを自動的に検出し、対応する都市を表示するコードを作成しようとしています。これは、Geocoder を使用して IP を検出し、対応する都市を表示するのと同じくらい簡単だと思いましたが、成功していません。
IP アドレスとの互換性があると主張するドキュメントを調べてきましたが、何か間違ったことを行っているか、ドキュメントが間違っています: http://rdoc.info/github/alexreisner/geocoder/master/frames
文字列などのデータを提供すると思われる location.rb モデルにこれがresult.city
あります。
class Location < ActiveRecord::Base
attr_accessible :address, :latitude, :longitude
reverse_geocoded_by :lat, :lon do |obj,results|
if geo = results.first
obj.city = geo.city
obj.zipcode = geo.postal_code
obj.country = geo.country_code
end
end
after_validation :reverse_geocode
end
そこで、location_controller.rb に @city = result.city を追加しました。
def index
@locations = Location.all
@city = result.city
end
<%= @city %>
次に、それが機能することをテストするために、場所に index.html.erbを入れました。
ページをレンダリングすると、「結果」が定義されていないことを示すエラーがコントローラーに表示されます。
undefined local variable or method `result' for #<LocationsController:0x007faf9d5009e8>
app/controllers/locations_controller.rb:7:in `index'
どこが間違っていますか?または、モデルが説明どおりに機能しないのはなぜですか?