0

さらに場所を取得できるように、システムの実際の IP を取得したい (geocoder gem を使用)。ユーザーのIPを取得するためにdevise gemの追跡可能モジュールを使用しています。IP をジオコーディングしようとすると、 devise によって返されるlast_signed_in_ipが常に 127.0.0.1 であるため失敗します。ブラウザで場所のアクセス許可を再確認したので、そこで場所を追跡することが許可されているため、問題はないようです。何が間違っている可能性がありますか?

また、自分の場所を見つけるためのより良い方法はありますか (IP アドレスを追跡してジオコーディングする以外に?)。ユーザーが許可していない場合、またはそのような設定を認識していない場合に、アプリケーション内からの位置追跡を許可するようにユーザーに再度求めることはできますか?

事前にすべてのヘルプに感謝します。

ありがとう

4

2 に答える 2

0

request.remote_ipあなたの問題を解決します...

代わりに、自分の m/c アドレスが返されることはありません。ジオコーディング (テスト) のためにリモート アドレスが必要な場合は、IP アドレスと場所を照合するデータベース テーブルに 127.0.0.1 を追加することをお勧めします。

テスト目的で、次のようにハードコーディングできます。

if request.remote_ip == '127.0.0.1'
  # Hard coded remote address
  '123.45.67.89'
else
  request.remote_ip
end
于 2013-10-26T08:47:18.560 に答える
0

外部 IP アドレスをプログラムで返したい場合は、そのアドレスからアプリにアクセスする必要があります。

localhost でアプリにアクセスすると、request.remote_ip127.0.0.1 が返されます。これが localhost の IP アドレスであるためです。

これを回避するには、開発ポート (通常は 3000) をルーターから PC に転送し、localhost の代わりに外部 IP アドレスをブラウザーに入力してアプリにアクセスします (例: 123.123.123.123:3000)。

または、外部 IP アドレスを localhost を指すホスト ファイルに追加し (例: localhost 123.123.123.123)、上記のように外部 IP アドレスを介してアプリを参照します。

于 2013-10-26T11:31:28.153 に答える