RoR - 随机视频在主页上播放

时间:2017-12-12 01:37:09

标签: html ruby-on-rails ruby video

每次用户访问网站或刷新主页时,都会尝试提供随机视频。这样每次都会让它看起来与众不同。

home.html的当前代码

<div class="home-banner basic-banner static video-container hidden-xs hidden-sm">

    <%= @random_video %><%= video_tag "test-3.mp4, test-4.mp4", autoplay: true, loop: true, muted: true, class: "video" %>
    <div class="container">
        <div class="title text-center">
            <h1 class="border border-color-white border-thick">PARADISE<br>BELOW</h1>
        </div>
    </div> 
</div>

视频来自/ app / assets / videos /

静态控制器

  def home
    @tour_category = TourCategory.all
       @videos  = ["app/assets/videos"]
       @random_no = rand(2)
       @random_video = @videos[@random_no]
  end

随机功能有效,但它只在加载或刷新时显示视频的标题。例如:test-3.mp4,refresh:test-4.mp4

所以现在它只是让视频正常播放而不是显示标题。

一直在寻求帮助:http://www.java2s.com/Code/Ruby/Rails/Displayrandomimage.htm

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的代码对解决方案很简单,但您必须修复3点:

  • 您的随机逻辑无法正常工作。您的@videos只是一个字符串"app/assets/videos"的数组,而不是文件数组
  • 您应该将video_tag与随机视频一起使用。由于您将其与"test-3.mp4, test-4.mp4"字符串一起使用,因此它会生成错误的视频HTML。
  • video_tag需要视频文件名,而不是文件,所以你的随机逻辑也没有解决它。

要达到效果,

  • 您的随机逻辑应该看起来像

    videos = Dir.glob("#{Rails.root}/app/assets/videos/*.mp4")
    random_video_path = videos.sample
    @random_video_name = File.basename(random_video_path)
    
  • 并在您的视图中使用它

    <%= video_tag @random_video_name, autoplay: true, loop: true, muted: true, class: "video" %>
    

Rails会为您完成剩下的工作,包括生成正确的视频网址。