我正在开发一个应用程序,该应用程序通过YoutubeDataApi在YouTube上显示当前的流行视频(缩略图,视频标题和频道标题)。每当我单击趋势视频的缩略图或标题时,我都希望访问正确的URL。 这是我在控制器中使用的代码:
# frozen_string_literal: true
class WelcomeController < ApplicationController
def index
youtube_data_api = YoutubeDataApi.new.client
@result, @errors = youtube_data_api.list_videos 'snippet, id', chart: 'mostPopular', region_code: 'FR', max_results: '50'
end
end
这是我在视图中使用的代码:
<div style="margin:0 auto; padding:20px 0;">
<% @result.items.each do |video| %>
<a href="https://www.youtube.com/watch?v=#{video_id}" target="_blank" style="color:black"><img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">
<div id="channel_title">
<u><b><%= video.snippet.channel_title %></u></b>
</div>
<div id="video_title" style="margin-bottom: 50px;">
<i><%= video.snippet.title %></i>
</div>
</a>
<% end %>
此应用中使用的宝石:宝石'google-api-client', '>0.7'
有人可以帮助我吗?预先感谢
答案 0 :(得分:1)
您正在使用哪种宝石,以便我们可以更好地了解您的工作。
只需加一点盐即可,但是您的图片具有src“ <%= video.snippet.thumbnails.default.url%>”
该网址是否指向视频网址?如果确实如此,只需将href值更改为该video.snippet.thumbnails.default.url。
当前具有该href的所有视频都会在“ https://www.youtube.com/feed/trending”中打开一个新标签
在video.snippet(video.snippet.url)上是否有网址?
哦,您还需要在标题和缩略图之间都加上一个,以便在单击它们时将它们链接起来。通过循环,您将获取每个视频的数据,因此,如果您可以获取正确的网址,则只需在所有内容之间放置链接,就可以了。
编辑:
我想我有你的答案。您已经发送了将视频ID检索到api的方法,因此获取视频所需要做的就是`video.id v =#{video.id}而不是video_id,除非您创建另一个变量that并将其设置为video.id。 在您的视图循环中:
<div style="margin:0 auto; padding:20px 0;">
<% @result.items.each do |video| %>
<a href="https://www.youtube.com/watch?v=<%= #{video.id} %>" target="_blank" style="color:black"><img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">
<div id="channel_title">
<u><b><%= video.snippet.channel_title %></u></b>
</div>
<div id="video_title" style="margin-bottom: 50px;">
<i><%= video.snippet.title %></i>
</div>
</a>
<% end %>
因此,只需简单地将注入href的变量从video_id更改为video.id。但是,YouTube给您的只是视频ID,而不是您所注意到的完整链接。只需进行少量的红宝石变量更改,您就可以开始使用! :)
哦,忘了提起红宝石,除非您插入上面显示的类似erb的标签,否则它不会出现。
做同一件事的一种可能更好的方法是:
<%= link_to "https://www.youtube.com/watch?v=#{video.id}", style="color: black;", target="_blank", style="color: black;" do %>
.... (stuff you are wrapping)
<% end %>
一共:
<div style="margin:0 auto; padding:20px 0;">
<% @result.items.each do |video| %>
<%= link_to "https://www.youtube.com/watch?v=#{video_id}", style="color: black;", target="_blank", style="color: black;" do %>
<img src="<%= video.snippet.thumbnails.default.url %>" height="90" width="120">
<div id="channel_title">
<u><b><%= video.snippet.channel_title %></u></b>
</div>
<div id="video_title" style="margin-bottom: 50px;">
<i><%= video.snippet.title %></i>
</div>
<% end %>
<% end %>
https://api.rubyonrails.org/v5.2.1/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
欢呼