【问题标题】:Adding custom HTML code (<track> tag) through Rails video_tag helper通过 Rails video_tag 助手添加自定义 HTML 代码(<track> 标签)
【发布时间】:2015-12-19 20:40:11
【问题描述】:

我正在尝试使用“video_tag”(http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-video_tag) 为我的 Rails 网站上的视频添加字幕。这将返回一个 HTML5 视频标签。但是,要添加字幕,您需要向 HTML5 标记添加一个子节点,如下所述:

https://developer.mozilla.org/en-US/Apps/Build/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video:

<video id="video" controls preload="metadata">
   <source src="video/sintel-short.mp4" type="video/mp4">
   <source src="video/sintel-short.webm" type="video/webm">
   <track label="English" kind="subtitles" srclang="en" src="captions/vtt/sintel-en.vtt" default>
</video>

问题是,我如何通过使用 Rails 的“video_tag”助手添加另一个 HTML 标签?

我目前的代码如下:

<%= video_tag Video.last.file , size: "850x450", controls: true %>

这会生成以下 HTML5 视频标签:

<video controls="controls" width="850" height="450" src="/uploads/video/file/14/blah_blah.mp4"></video>

不确定如何将 &lt;track&gt; 标签放入 Rails“video_tag”中。如果我向帮助程序添加另一个参数,这只会产生另一个 src HTML 标签,并将其作为选项添加到“video_tag”会产生一个 HTML 属性,但不会产生一个子节点。

我显然可以通过将 HTML 代码直接放在我的 ERB 模板中来解决这个问题,但我的假设是 Rails 的“video_tag”助手应该以某种方式支持这一点。 任何帮助表示赞赏。谢谢!

【问题讨论】:

  • 我知道我的示例中有“Video.last.file”(这不是显示上传视频的正确方式),这仅用于测试目的。

标签: ruby-on-rails html


【解决方案1】:

您只能在 video_tag 中传递不带任何属性的来源:

video_tag(["trailer.ogg", "trailer.flv"], size: "160x120")
# => <video height="120" width="160"><source src="/videos/trailer.ogg" /><source src="/videos/trailer.flv" /></video>

Rails 源代码:

if sources.size > 1
  content_tag(type, options) do
    safe_join sources.map { |source| tag("source", :src => send("path_to_#{type}", source)) }
  end
else
  options[:src] = send("path_to_#{type}", sources.first)
  content_tag(type, nil, options)
end

所以 HTML 解决方法是解决此问题的唯一方法。

【讨论】:

    【解决方案2】:

    我相信有一个名为 track 的 HTML5 标签。不太确定如何实施,我现在才开始阅读。 https://www.w3schools.com/tags/tag_track.asp

    【讨论】:

    • 问题已经提到这个标签是一种处理字幕的方式,并用它显示 HTML sn-p。我在问是否有一种本地方式可以将标签与 Rails 助手一起使用。无论如何,现在已经解决了,我不得不在视图模板中使用原始 HTML,但不确定更高版本的 Rails 是否可以修复这个问题。
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2012-08-17
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多