初学者でrailsでアプリ制作をしており、最後に、
YouTubeから取ってきた動画を一覧表示しているものにお気に入りボタンを実装したいと考えております。
現在の実装段階は下記の通りになります。
youtube_controller.rb
1class YoutubeController < ApplicationController 2 before_action :logged_in_user, only: :songs 3 4 def home 5 end 6 7 def songs 8 require 'google/apis/youtube_v3' 9 youtube = Google::Apis::YoutubeV3::YouTubeService.new 10 youtube.key = "APIキー" 11 youtube_search_list = youtube.list_searches("id,snippet", type: "video", q: "black music funk soul", max_results: 30) 12 search_result = youtube_search_list.to_h 13 @movies = search_result[:items] 14 end 15 16 def about 17 end 18 19 def contact 20 end 21end
songs.html.erb
1<% provide(:title, "Songs") %> 2 3<h1>Check them out !!!</h1> 4 5<% @movies.each do |movie| %> 6 <div class="movies-item"> 7 <li> 8 <iframe width="300" height="200" src="https://www.youtube.com/embed/<%= movie[:id][:video_id] %>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 9 </li> 10 </div> 11<% end %>
今考えているのが、上記のビューで取得している
movie[:id][:video_id]
こちらをユーザーIDと紐付けてプロフィールページにお気に入り動画一覧を表示しようと考えております。
YouTubeから取得した動画でデータベースを構築するとできるとは思うのですが、
今後動画検索の検索ワードを変える可能性もあるので、
希望としてはビューのeachメソッド内でどうにか動画URLとユーザーIDを紐づけてお気に入りの『Likeモデル』にデータを保存していきたいです。
create_likes.rb
1class CreateLikes < ActiveRecord::Migration[5.2] 2 def change 3 create_table :likes do |t| 4 t.references :user, null:false 5 6 t.timestamps 7 end 8 end 9end
(動画のテーブルはないので、このようにユーザーIDのみを参照するようにしています。)
上記を実現するための方法をご教授いただきますと幸いです。
まだまだ知識がないため、そもそもの理解ができていない点が文脈で見られるかもしれませんが、
不明点があれば、お手数ですがご指摘のほどお願いいたします。
前提として、自分が今実装しようとしていることが不可能であれば、最善策もご提案いただきますと大変嬉しく思います。
何卒よろしくお願いいたします。
利用環境
macOS High Sierra ver.10.13.6
rails 5.2.3
ruby 2.6.3
あなたの回答
tips
プレビュー