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

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

新規登録して質問してみよう
ただいま回答率
85.50%
YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

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

Q&A

1回答

996閲覧

RailsでYouTubeのAPIを叩いて、こちらで固定したキーワードで見つかった動画をビューに表示させたい

Keight

総合スコア9

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Ruby on Rails

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

1グッド

1クリップ

投稿2022/02/11 05:08

タイトルのとおりのことをしたく、下記ページを参考に(ほぼ丸写しで内容はあまり理解できていません)、コントローラとビューは作りました。
https://qiita.com/sakakinn/items/46c0d4945e4646f346f6

ただ、エラーが出てしまいます。

イメージ説明

引数のところ、期待値が1つに対して、2つ与えられているというエラーなのかなと思うのですが、参考ページどおりにしているので、なぜなんだというところです・・・。
わかる方、教えていただけますでしょうか。
よろしくお願いいたします。

APIキーは取得済みで、dotenvに記述しています。

env

1# YouTube用 2GOOGLE_API_KEY = "YoutubeV3のAPIキーを入れています"

youtube_controller.rb

1class YoutubeController < ApplicationController 2 GOOGLE_API_KEY = ENV["GOOGLE_API_KEY"] 3 4 def find_videos(keyword, after: 1.months.ago, before: Time.now) 5 service = Google::Apis::YoutubeV3::YouTubeService.new 6 service.key = GOOGLE_API_KEY 7 8 next_page_token = nil 9 opt = { 10 q: keyword, 11 type: 'video', 12 max_results: 3, 13 order: :date, 14 page_token: next_page_token, 15 published_after: after.iso8601, 16 published_before: before.iso8601 17 } 18 service.list_searches(:snippet, opt) 19 end 20 21 def index 22 @youtube_data = find_videos('こちらで指定のキーワード') 23 end 24 end

index.html.erb

1<% @youtube_data.items.each do |item| %> 2 <% snippet = item.snippet %> 3 <p><%= snippet.title %></p> 4 <p><%= snippet.published_at %><%= snippet.channel_title %></p> 5 <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> 6<% end %>

routes.rb

1Rails.application.routes.draw do 2 get "/", to: "home#top" 3 get "about", to: "home#about" 4 get "index", to: "youtube#index" 5end
ikore908👍を押しています

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

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

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

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

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

guest

回答1

0

参考にされているサンプルコードが古く、Ruby 3.0 に対応していないんじゃないかと思います。
double splat 演算子(**)を追加してください。

diff

1- service.list_searches(:snippet, opt) 2+ service.list_searches(:snippet, **opt)

Ruby 3.0における位置引数とキーワード引数の分離について
https://www.ruby-lang.org/ja/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/

投稿2022/02/11 05:57

shinoharat

総合スコア1674

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

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

Keight

2022/02/11 08:26

コメントありがとうございます。 そちらのように修正してみたところ、また違うエラーが出てしまいました・・・。 No template for interactive request YoutubeController#index is missing a template for request formats: text/html NOTE! Unless told otherwise, Rails expects an action to render a template with the same name, contained in a folder named after its controller. If this controller is an API responding with 204 (No Content), which does not require a template, then this error will occur when trying to access it via browser, since we expect an HTML template to be rendered for such requests. If that's the case, carry on.
shinoharat

2022/02/11 12:01

「view を描画するためのテンプレートが見つからない」というエラーです。 views/youtube/index.html.erb が存在するか、そしてファイル名やフォルダ名にタイプミスがないかを確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問