1

私のインデックス インデックス コントローラーには @usergeo = Geocoder.search("83.215.14.101") があります

結果は次のとおりです。

Geocoder::Result::Freegeoip:0x007ff3ced35eb8 @data={
"city"=>"Salzburg", 
"region_code"=>"05", 
"region_name"=>"Salzburg", 
"metrocode"=>"", 
"zipcode"=>"",
"longitude"=>"13.0333", 
"latitude"=>"47.8", 
"country_code"=>"AT", 
"ip"=>"83.215.14.101", 
"country_name"=>"Austria"},

 @cache_hit=nil>]

.class は配列であることを意味します!

ビューで私はこれを試します:

<%= @usergeo["city"] %>

結果は

can't convert String into Integer

@usergeo[:city] も機能しません

どんなコメントも私にとってとても役に立ちます ありがとう

4

2 に答える 2

2

この場合、@data サンプルを参照するように@usergeo.first.cityorを試してください。@usergeo[0].city

そのエラーが発生する理由は、基本的に結果に対して Array["city"] を呼び出そうとしているためですが、配列は明らかに文字列ではなく整数を期待しています。このようにして、ハッシュであるオブジェクトを参照し、代わりに ["city"] を呼び出します。

于 2012-07-16T13:45:35.957 に答える
1

配列ではなく、代わりにGeocoder::Result::Freegeoip試してください@usergeo.city@usergeo["city"]

このクラスのドキュメント:

http://rubydoc.info/github/alexreisner/geocoder/master/Geocoder/Result/Freegeoip

これがお役に立てば幸いです...

于 2012-07-16T12:21:25.537 に答える