質問編集履歴

3

言語の追加

2020/09/19 09:19

投稿

natu494
natu494

スコア6

test CHANGED
File without changes
test CHANGED
File without changes

2

文の修正

2020/09/19 09:19

投稿

natu494
natu494

スコア6

test CHANGED
File without changes
test CHANGED
@@ -8,19 +8,9 @@
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
 
11
- ```
12
-
13
- エラーメッセージ
14
11
 
15
12
 
16
-
17
-
18
-
19
- ### 該当のソースコード
20
-
21
-
22
-
23
- ```ここに言語名を入力
13
+ ```Ruby on rails
24
14
 
25
15
  ソースコード
26
16
 
@@ -38,9 +28,7 @@
38
28
 
39
29
  <div class="col-md-12 px-0 row">
40
30
 
41
- <%= f.text_field :keyword, :value => @results %>
31
+ <%= f.text_field :search, :value => @keyword %>
42
-
43
- <%= f.select :views, {'1万以上': 1, '10万以上': 2, '100万以上':3}, { :include_blank => "指定してください▼" }, :required => true %>
44
32
 
45
33
  <%= f.submit'検索', class: 'btn btn-primary' %>
46
34
 
@@ -74,8 +62,6 @@
74
62
 
75
63
  <% @results.items.each do |item| %>
76
64
 
77
- <% id = item.id %>
78
-
79
65
  <% snippet = item.snippet %>
80
66
 
81
67
  <p><%= snippet.title %></p>
@@ -108,11 +94,11 @@
108
94
 
109
95
  before_action :require_user_logged_in, only: [:index]
110
96
 
111
-
97
+ require 'google/apis/youtube_v3'
112
98
 
113
99
  def index
114
100
 
115
- @results = find_videos('')
101
+ @results = find_videos(@keyword)
116
102
 
117
103
  end
118
104
 
@@ -124,13 +110,13 @@
124
110
 
125
111
 
126
112
 
127
- def find_videos(keyword, after: 1.months.ago, before: Time.now)
113
+ def find_videos(keyword, after: 7.months.ago, before: Time.now)
128
114
 
129
- service = Google::Apis::YoutubeV3::YouTubeService.new
115
+ service = Google::Apis::YoutubeV3::YouTubeService.new
130
116
 
131
- service.key = GOOGLE_API_KEY
117
+ service.key = GOOGLE_API_KEY
132
118
 
133
- next_page_token = nil
119
+ next_page_token = nil
134
120
 
135
121
  opt = {
136
122
 
@@ -138,7 +124,7 @@
138
124
 
139
125
  type: 'video',
140
126
 
141
- max_results: 2,
127
+ max_results: 1,
142
128
 
143
129
  order: :date,
144
130
 
@@ -150,11 +136,11 @@
150
136
 
151
137
  }
152
138
 
139
+ @keyword = opt[:q]
140
+
153
141
  service.list_searches(:snippet, opt)
154
142
 
155
143
  end
156
-
157
-
158
144
 
159
145
  end
160
146
 

1

誤字がありましたので修正しました。

2020/09/19 08:35

投稿

natu494
natu494

スコア6

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Ruby on RailsでYoutubeAPIを用いてキーワード検索や総再生回数を絞り込むフィルター使った検索サイトを作りたいのですが、Youtubeapiと検索機能の紐付けがよくわかりません。
4
4
 
5
+ 実現したいのはfind_videosメソッドをindex.html.erbの:keywordと連動するようにしたいです。
6
+
5
7
  ■■な機能を実装中に以下のエラーメッセージが発生しました。
6
-
7
- 自分なりに検索機能を実装中に下記のエラーが発生しました。
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
 
@@ -12,27 +12,7 @@
12
12
 
13
13
  エラーメッセージ
14
14
 
15
- NoMethodError in Toppages#index
16
15
 
17
- Showing /home/ec2-user/environment/Mytube/app/views/toppages/index.html.erb where line #24 raised:
18
-
19
-
20
-
21
- undefined method `each' for nil:NilClass
22
-
23
- Extracted source (around line #24):
24
-
25
- 23tbody>
26
-
27
- 24 <% @videos.each do |video| %>
28
-
29
- 25 <tr><td><%= video.snippet.title %></td><td>
30
-
31
- 26 <% end %>
32
-
33
- 27 </tbody>
34
-
35
- ```
36
16
 
37
17
 
38
18
 
@@ -54,11 +34,11 @@
54
34
 
55
35
  <form class="form-inline">
56
36
 
57
- <%= form_with(model:@user, method: :get, local: true) do |f| %>
37
+ <%= form_with url: '/', method: :get, local: true do |f| %>
58
38
 
59
39
  <div class="col-md-12 px-0 row">
60
40
 
61
- <%= f.text_field :keyword %>
41
+ <%= f.text_field :keyword, :value => @results %>
62
42
 
63
43
  <%= f.select :views, {'1万以上': 1, '10万以上': 2, '100万以上':3}, { :include_blank => "指定してください▼" }, :required => true %>
64
44
 
@@ -80,9 +60,7 @@
80
60
 
81
61
  <tr>
82
62
 
83
- <th>Video</th>
63
+ <th>Videos</th>
84
-
85
- <th>Views</th>
86
64
 
87
65
  </tr>
88
66
 
@@ -92,11 +70,23 @@
92
70
 
93
71
  <tbody>
94
72
 
95
- <% @videos.each do |video| %>
73
+ <td>
96
74
 
97
- <tr><td><%= video.snippet.title %></td><td>
75
+ <% @results.items.each do |item| %>
98
76
 
99
- <% end %>
77
+ <% id = item.id %>
78
+
79
+ <% snippet = item.snippet %>
80
+
81
+ <p><%= snippet.title %></p>
82
+
83
+ <p><%= snippet.channel_title %></p>
84
+
85
+ <div><iframe width="560" height="315" src="https://www.youtube.com/embed/<%= item.id.video_id %>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
86
+
87
+ <% end %>
88
+
89
+ </td>
100
90
 
101
91
  </tbody>
102
92
 
@@ -110,18 +100,70 @@
110
100
 
111
101
  <% end %>
112
102
 
103
+
104
+
105
+ toppages_controller
106
+
107
+ class ToppagesController < ApplicationController
108
+
109
+ before_action :require_user_logged_in, only: [:index]
110
+
111
+
112
+
113
+ def index
114
+
115
+ @results = find_videos('')
116
+
113
- ```
117
+ end
114
118
 
115
119
 
116
120
 
117
- ### 試したこと
121
+ private
122
+
123
+ GOOGLE_API_KEY =ENV['KEY']
118
124
 
119
125
 
120
126
 
121
- ここに問題に対して試したことを記載してください。
127
+ def find_videos(keyword, after: 1.months.ago, before: Time.now)
122
128
 
123
- エラー文はvideosnilになっているのが問題と書いてありますがそれについても詳しく教えて欲しいです。
129
+ service = Google::Apis::YoutubeV3::YouTubeService.new
130
+
131
+ service.key = GOOGLE_API_KEY
132
+
133
+ next_page_token = nil
134
+
135
+ opt = {
136
+
137
+ q: keyword,
138
+
139
+ type: 'video',
140
+
141
+ max_results: 2,
142
+
143
+ order: :date,
144
+
145
+ page_token: next_page_token,
146
+
147
+ published_after: after.iso8601,
148
+
149
+ published_before: before.iso8601
150
+
151
+ }
152
+
153
+ service.list_searches(:snippet, opt)
154
+
155
+ end
156
+
157
+
158
+
159
+ end
160
+
161
+ ```
124
162
 
125
163
  ### 補足情報(FW/ツールのバージョンなど)
126
164
 
127
165
  使っているツールはAWSです。
166
+
167
+ find_videosメソッドはこの方の記事を参考にしました。
168
+
169
+ https://qiita.com/sakakinn/items/46c0d4945e4646f346f6