前提・実現したいこと
YoutubeAPIを使ってYotubeアプリを自分で作ってみたいです。
該当のソースコード
発生している問題は動画を検索するキーワードをfind_videos(params[:content])で呼び出しているのですがこれを検索履歴ページに保存したいのですがうまくいきません。
検索ページ <% if logged_in? %> <p>ログイン完了ユーザ: <%= current_user.name %></p> <div class="container "> <form class="form-inline"> <%= form_with(model: @result, local: true, method: :get, class: "search-form" ) do |f| %> <div class="col-md-12 px-0 row"> <%= f.label :content, '検索', value: @result %> <%= f.text_field :content, placeholder: "検索する", class: "search-input" %> <%= f.submit '検索', class: 'btn btn-primary' %> </div> <% end %> </div> <div class="container"> <table calss="table"> <thead> <tr> <th>Videos</th> </tr> </thead> <tbody> <td> <% @data.items.each do |item| %> <% snippet = item.snippet %> <p><%= snippet.title %></p> <p><%= snippet.published_at %><%= snippet.channel_title %></p> <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> <% end %> </td> </tbody> </table> </div> <% else %> <%= render 'sessions/new' %> <% end %> 保存ページ <% if logged_in? %> <p>ログイン完了ユーザ: <%= current_user.name %></p> <div class="container"> <table calss="table"> <thead> <tr> <th>検索履歴</th> </tr> </thead> <tbody> <tr> <td> <% @result.each do |result| %> <%= result.content %> <% end %> </td> </tr> </tbody> </table> </div> <% else %> <%= render 'sessions/new' %> <% end %> コントローラー class ToppagesController < ApplicationController before_action :require_user_logged_in, only: [:index] require 'google/apis/youtube_v3' require 'active_support/all' GOOGLE_API_KEY = ENV['KEY'] def index @data = find_videos(params[:content]) end def find_videos(keyword, after: 1.months.ago, before: Time.now) service = Google::Apis::YoutubeV3::YouTubeService.new service.key = GOOGLE_API_KEY next_page_token = nil opt = { q: keyword, type: 'video', max_results: 1, order: :date, page_token: next_page_token, published_after: after.iso8601, published_before: before.iso8601 } service.list_searches(:snippet, opt) end end 保存ページコントローラ class ResultsController < ApplicationController before_action :require_user_logged_in def index @result = Result.all.order(id: :desc).page(params[:page]).per(10) end def new @result = Result.new end def create @result = Result.new(result_params) if @result.save redirect_to @result else render :toppages end end private def result_params params.require(:result).permit(:content) end end
補足情報(FW/ツールのバージョンなど)
ruby '2.6.3'
rails '5.2.2'
AWS Cloud9
あなたの回答
tips
プレビュー