質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1550閲覧

[Rails]:ホットペッパーグルメAPIを用いて現在地に基づくお店検索機能をつけたい

naonao-program

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

2グッド

1クリップ

投稿2021/12/09 16:11

編集2021/12/09 19:14

前提 解決したいこと

GeolocationAPIとホットペッパーAPIを使って現在地から、セレクトボックスの選択した半径の範囲のお店を検索したい。

#具体的な課題
最も実現したい機能としてはRailsのerbで「ユーザーの現在地情報を取得し、指定した範囲の周辺レストラン情報を一覧表示する」です。

現状わかっていること

1.Geolocation APIを使って現在地の取得をconsole.logで確認することができた。
2.コントローラーで記述したところJson形式でお店の情報を拾うことができた

app/controllers/homes_controller.rb

ruby

1class HomesController < ApplicationController 2 require 'net/http' 3 require 'uri' 4 require 'json' 5 def search 6 key = "自分のAPIKey" 7 lat = '35.658' 8 lng = '139.7016' 9 range = 1 10 api = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=#{key}&lat=#{lat}&lng=#{lng}&range=#{range}&order=1&format=json") 11 json = Net::HTTP.get(api) 12 @result = JSON.parse(json) 13 end 14end 15

views/homes/search.html.erb

erb

1<%= @result %>

上のコードのブラウザ結果
イメージ説明

別でrubyファイルを用意して実行してみた

ruby

1require 'net/http' 2require 'json' 3 4# 初期設定 5KEYID = "自分のAPIkey" 6COUNT = 100 7LAT = "35.658" 8LNG = "139.7016" 9FORMAT = "json" 10PARAMS = {"key": KEYID, "count":COUNT, "lat":LAT, "lng":LNG,"format":FORMAT} 11 12def write_data_to_csv(params) 13 restaurants = [["名称","営業日","住所","アクセス","画像"]] 14 uri = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/") 15 uri.query = URI.encode_www_form(PARAMS) 16 json_res = Net::HTTP.get uri 17 18 response = JSON.load(json_res) 19 20 if response == nil or response["results"].has_key?("error") then 21 puts "エラーが発生しました!" 22 end 23 for restaurant in response["results"]["shop"] do 24 rest_info = [restaurant["name"], restaurant["open"], restaurant["address"], restaurant["access"], restaurant["photo"]] 25 puts rest_info 26 restaurants.append(rest_info) 27 end 28 29 File.open("restaurants_list.csv", "w") do |file| 30 file << restaurants 31 end 32 return puts restaurants 33end 34 35write_data_to_csv(PARAMS)

実行結果

ruby

1ディプント Di PUNTO 渋谷駅前店 2月~日、祝日、祝前日: 16:00~翌5:00 (料理L.O.4:00 ドリンクL.O.4:003東京都渋谷区渋谷1-24-16 みずほ銀行遠州屋共同ビルBF 4渋谷駅前 徒歩15{"mobile"=>{"l"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_100.jpg"}, "pc"=>{"l"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_238.jpg", "m"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/37/15/P034673715/P034673715_58_s.jpg"}} 6鳥貴族 渋谷西口店 7月~日、祝日、祝前日: 17:00~翌5:00 (料理L.O.4:30 ドリンクL.O.4:308東京都渋谷区道玄坂1-7-1 第一渋観ビル 5F 9JR渋谷駅西口より 徒歩3/井の頭線渋谷駅 中央口より 徒歩110{"mobile"=>{"l"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_100.jpg"}, "pc"=>{"l"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_238.jpg", "m"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_168.jpg", "s"=>"https://imgfp.hotp.jp/IMGH/29/83/P036032983/P036032983_58_s.jpg"}} 11.....

調べたこと

同じような質問をしている方
こちらのベストアンサーで

Railsで座標情報を受け取ってHotPepperのWebAPIにリクエストするのかと思いますが、

rubyで外部へHTTPリクエストをするGemは有名どころだとHTTPartyやFaradayがあります。

調べましたが、これがあまり良くわからなかったです。

まとめ

Jsonでビューまで表示はできたが、実際に店舗名称 、アクセス 、サムネイル画像を表示させたいです。

ikore908, tanamaru👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問