如何使用Oembed将一个youtube缩略图/标题嵌入到RoR的索引页面中

时间:2015-09-02 15:32:04

标签: ruby-on-rails ruby youtube oembed video-embedding

我对铁轨上的红宝石很新,我希望得到一些帮助。 我已经能够弄清楚如何将youtube剪辑嵌入到我的显示页面并显示标题

显示视图

#video_show
  %h1= @youtube.title.html_safe 
  %p.username
    Shared by
    = @video.user.name
    about
    = time_ago_in_words(@video.created_at)
  .clearfix
    .video_image_show
      = @youtube.html.html_safe

视频控制器

def index
    @videos = Video.all.order("created_at DESC").paginate(page: params[:page], per_page: 20)
    @video.link = Video.find(params[:id])
    @youtube = OEmbed::Providers::Youtube.get(@video.link)


end

def show
     @infos = Info.where(video_id: @video)
     @comments = Comment.where(video_id: @video)
     @random_video = Video.where.not(id: @Video).order("RANDOM()").first
     @youtube = OEmbed::Providers::Youtube.get(@video.link)
end

但接下来是在我的索引页面显示缩略图和标题,它告诉我我有一个未定义的方法,例如' title'。

索引视图

- @videos.each do |video|
    .Video
        .Video_image
            = image_tag @youtube.thumbnail_url.html_safe, video
        .Video_content
            .title
                %h2= @youtube.title.html_safe, video
            .data.clearfix
                %p.username
                    Shared by
                    = video.user.name

无论如何,我可以将视频ID链接到索引页面,这将允许Oembed显示@youtube = OEmbed :: Providers :: Youtube.get(@ video.link)缩略图和标题?

非常感谢

1 个答案:

答案 0 :(得分:0)

您无法在控制器的索引方法中设置@youtube,因为此时您有一系列视频。你需要拥有的是:

控制器中的

def index
    @videos = Video.all.order("created_at DESC").paginate(page: params[:page], per_page: 20)
end

并在您的HAML视图中

- @videos.each do |video|
    - youtube = OEmbed::Providers::Youtube.get(video.link)
    .Video
        .Video_image
            = image_tag youtube.thumbnail_url.html_safe, video
        .Video_content
            .title
                %h2= youtube.title.html_safe, video
            .data.clearfix
                %p.username
                    Shared by
                    = video.user.name