每次用户访问网站或刷新主页时,都会尝试提供随机视频。这样每次都会让它看起来与众不同。
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
感谢您的帮助。
答案 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会为您完成剩下的工作,包括生成正确的视频网址。