質問編集履歴

2

別の店の名前などをコンソール上で出力できるようになったのでどうやったか追記

2021/12/09 19:14

投稿

naonao-program
naonao-program

スコア4

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  def search
34
34
 
35
- key = "64c59eed4873e844"
35
+ key = "自分のAPIKey"
36
36
 
37
37
  lat = '35.658'
38
38
 
@@ -64,11 +64,117 @@
64
64
 
65
65
  ```
66
66
 
67
+
68
+
67
69
  上のコードのブラウザ結果
68
70
 
69
71
  ![イメージ説明](4dd8da186d5ea238e5edf2fe91a8fd2e.png)
70
72
 
71
73
 
74
+
75
+ # 別でrubyファイルを用意して実行してみた
76
+
77
+ ```ruby
78
+
79
+ require 'net/http'
80
+
81
+ require 'json'
82
+
83
+
84
+
85
+ # 初期設定
86
+
87
+ KEYID = "自分のAPIkey"
88
+
89
+ COUNT = 100
90
+
91
+ LAT = "35.658"
92
+
93
+ LNG = "139.7016"
94
+
95
+ FORMAT = "json"
96
+
97
+ PARAMS = {"key": KEYID, "count":COUNT, "lat":LAT, "lng":LNG,"format":FORMAT}
98
+
99
+
100
+
101
+ def write_data_to_csv(params)
102
+
103
+ restaurants = [["名称","営業日","住所","アクセス","画像"]]
104
+
105
+ uri = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/")
106
+
107
+ uri.query = URI.encode_www_form(PARAMS)
108
+
109
+ json_res = Net::HTTP.get uri
110
+
111
+
112
+
113
+ response = JSON.load(json_res)
114
+
115
+
116
+
117
+ if response == nil or response["results"].has_key?("error") then
118
+
119
+ puts "エラーが発生しました!"
120
+
121
+ end
122
+
123
+ for restaurant in response["results"]["shop"] do
124
+
125
+ rest_info = [restaurant["name"], restaurant["open"], restaurant["address"], restaurant["access"], restaurant["photo"]]
126
+
127
+ puts rest_info
128
+
129
+ restaurants.append(rest_info)
130
+
131
+ end
132
+
133
+
134
+
135
+ File.open("restaurants_list.csv", "w") do |file|
136
+
137
+ file << restaurants
138
+
139
+ end
140
+
141
+ return puts restaurants
142
+
143
+ end
144
+
145
+
146
+
147
+ write_data_to_csv(PARAMS)
148
+
149
+ ```
150
+
151
+ 実行結果
152
+
153
+ ```ruby
154
+
155
+ ディプント Di PUNTO 渋谷駅前店
156
+
157
+ 月~日、祝日、祝前日: 16:00~翌5:00 (料理L.O. 翌4:00 ドリンクL.O. 翌4:00)
158
+
159
+ 東京都渋谷区渋谷1-24-16 みずほ銀行遠州屋共同ビルB1F
160
+
161
+ 渋谷駅前 徒歩1分
162
+
163
+ {"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"}}
164
+
165
+ 鳥貴族 渋谷西口店
166
+
167
+ 月~日、祝日、祝前日: 17:00~翌5:00 (料理L.O. 翌4:30 ドリンクL.O. 翌4:30)
168
+
169
+ 東京都渋谷区道玄坂1-7-1 第一渋観ビル 5F
170
+
171
+ JR渋谷駅西口より 徒歩3分/井の頭線渋谷駅 中央口より 徒歩1分
172
+
173
+ {"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"}}
174
+
175
+ .....
176
+
177
+ ```
72
178
 
73
179
  # 調べたこと
74
180
 

1

追記

2021/12/09 19:14

投稿

naonao-program
naonao-program

スコア4

test CHANGED
File without changes
test CHANGED
@@ -14,41 +14,59 @@
14
14
 
15
15
  1.Geolocation APIを使って現在地の取得をconsole.logで確認することができた。
16
16
 
17
- 2.別のRubyファイルで記述したところJson形式でお店の情報を拾うことができた
17
+ 2.コントローラーで記述したところJson形式でお店の情報を拾うことができた
18
+
19
+
20
+
21
+ app/controllers/homes_controller.rb
18
22
 
19
23
  ```ruby
20
24
 
21
- require 'net/http'
25
+ class HomesController < ApplicationController
22
26
 
23
- require 'uri'
27
+ require 'net/http'
24
28
 
25
- require 'json'
29
+ require 'uri'
26
30
 
27
- class Hotpepper
31
+ require 'json'
28
32
 
29
- key = "[自分のAPIキー]"
33
+ def search
30
34
 
31
- lat = '緯度'
35
+ key = "64c59eed4873e844"
32
36
 
33
- lng = '経度'
37
+ lat = '35.658'
34
38
 
35
- range = 1
39
+ lng = '139.7016'
36
40
 
37
- api = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=#{key}&lat=#{lat}&lng=#{lng}&range=#{range}&order=1&format=json")
41
+ range = 1
38
42
 
39
- json = Net::HTTP.get(api)
43
+ api = URI.parse("http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=#{key}&lat=#{lat}&lng=#{lng}&range=#{range}&order=1&format=json")
40
44
 
41
- result = JSON.parse(json)
45
+ json = Net::HTTP.get(api)
42
46
 
43
- puts result
47
+ @result = JSON.parse(json)
48
+
49
+ end
44
50
 
45
51
  end
46
52
 
53
+
54
+
47
55
  ```
48
56
 
49
- 上のコードの実行結果
50
57
 
58
+
59
+ views/homes/search.html.erb
60
+
61
+ ```erb
62
+
63
+ <%= @result %>
64
+
65
+ ```
66
+
67
+ 上のコードのブラウザ結果
68
+
51
- ![上の実行結果](511e21f0d24642f75eb943607948df61.png)
69
+ ![イメージ説明](4dd8da186d5ea238e5edf2fe91a8fd2e.png)
52
70
 
53
71
 
54
72
 
@@ -61,3 +79,13 @@
61
79
  > Railsで座標情報を受け取ってHotPepperのWebAPIにリクエストするのかと思いますが、
62
80
 
63
81
  rubyで外部へHTTPリクエストをするGemは有名どころだとHTTPartyやFaradayがあります。
82
+
83
+
84
+
85
+ 調べましたが、これがあまり良くわからなかったです。
86
+
87
+
88
+
89
+ # まとめ
90
+
91
+ Jsonでビューまで表示はできたが、実際に店舗名称 、アクセス 、サムネイル画像を表示させたいです。