是否可以更改 rails 呈现一小段代码的方式

Is it possible to change the way rails renders a small piece of code

我正在尝试设置 VideoJS and I'm following the guide here

您会看到,对于自动设置,视频需要像这样初始化:

<video class="video-js" data-setup='{}'>

我认为这很好,因为在 rails 我可以这样做:

<%= video_tag @video.filename + '.mp4', :class => 'video-js', 'data-setup' => '{}' %>

但是,这会呈现如下标签:

<video class="video-js" data-setup="{}" src="/assets/0019 Trump Android.mp4"></video>

第一眼看上去不错,只是数据设置行需要单引号而不是双引号,否则 videojs 设置将无法运行。像这样:data-setup='{}'

那么有什么方法可以让 rails 用单引号而不是双引号来呈现那个属性?

另外,再想一想,既然我可以在 HTML 中编写视频标签,为什么还要 rails 渲染视频标签?

video_tag 助手确实有一些用途,例如引用图像的 poster 属性,因此需要它来包含图像文件的摘要。但是,对于您的用例,当您自己编写纯 html 非常容易时,我看不出有任何理由使用助手。

Helpers 只是为了让事情在语法上更容易阅读,更容易编程。如果你写 HTML 而不是 ERB,它会执行相同的操作,前提是你的 HTML 标签打印出 ERB 本来会打印的所有内容。

在这个专门的用例中,我只写了一个 ERB .each 标签包围的整个 HTML 标签。不确定你的控制器是如何设置的,但假设它是 @videos = Videos.all,它会是这样的:

<% @videos.each do |video| %>
  <video class="video-js" data-setup='{}' src=<%=video.file_name%>>
  </video>

<% end %>