【问题标题】:Embed youtube video in rails在 Rails 中嵌入 youtube 视频
【发布时间】:2012-01-06 12:09:00
【问题描述】:

我正在尝试在页面中嵌入视频。我尝试了两种不同的方法,但没有运气

show.html.erb

<p id="notice"><%= notice %></p>

<p>
  <b>Name:</b>
  <%= @video.name %>
</p>

<p>
  <b>Url:</b>
  <%= @video.url %>
</p>

<p>
    <% #video_tag( @video.url , :size => "560x315", :controls => true, :autobuffer => true ) %>
    <%= youtube_video @video.url%>
</p>

<%= link_to 'Edit', edit_video_path(@video) %> |
<%= link_to 'Back', videos_path %>

视频不显示,下面的链接也不显示。

任何提示将不胜感激。谢谢

这是调试结果

视频中的 ActionView::MissingTemplate#show

显示 /Users/atbyrd/Documents/sites/city/app/views/videos/show.html.erb 第 15 行在哪里提出:

缺少与 {:handlers=>[:erb, :builder, :coffee], :formats=>[:html], :locale=>[:en, :en]}。搜索:* “/Users/atbyrd/Documents/sites/city/app/views”* "/Users/atbyrd/.rvm/gems/ruby-1.9.2-p290/gems/devise-1.5.1/app/views"

提取的源代码(第 15 行附近):

12:13:

14: "560x315", :controls => true, :autobuffer => true) %> 15: 16:

17: 18: |

Rails.root:/Users/atbyrd/Documents/sites/city 应用程序跟踪 | 框架跟踪 |全程跟踪

app/helpers/application_helper.rb:4:in youtube_video' app/views/videos/show.html.erb:15:in _app_views_videos_show_html_erb__1532956397246631491_70281299458880' app/controllers/videos_controller.rb:18:in `show'

【问题讨论】:

  • 您能提供您的@video.url 并呈现HTML 吗?我认为第一种方法应该可行。

标签: ruby-on-rails macos video youtube embed


【解决方案1】:

您忘记关闭括号

<%= video_tag( @video.url %>

应该是

<%= video_tag( @video.url ) %>

更新:

尝试使用 video_path 代替 video_tag。

第二次更新:

这是我自己在自己的网站上执行此操作的方法:

1 - 创建一个名为 _video.html.erb 的部分(我实际上使用 haml,但如果您愿意,erb 会这样做)并将它放在一个文件夹中,如views/shared 或其他广告,将以下代码放入其中:

<iframe width="490" height="275" src="<%= url %>" frameborder="0" allowfullscreen></iframe>

2在application_helper.rb中添加如下方法

module ApplicationHelper
  # this method will embed the code from the partial
  def youtube_video(url)
    render :partial => 'shared/video', :locals => { :url => url }
  end 
end

3 - 现在只需在您的视图中调用它:

<%= youtube_video @video.url %>

这对我来说没问题

【讨论】:

  • 好的,我看到这确实有效,但视频没有播放,可以右键单击它并选择播放视频。然后它会将我发送到 youtube 页面
  • 更新了源代码和生成的 html。一开始我可以看到它在缓冲,但从来没有播放过
  • 啊,我们也可以看看你的 video_tag 辅助方法中的代码吗?另外,我认为 video.url 是格式正确的 URL?喜欢youtube.com/embed/xxxyyyzzz
  • PS _ 更新了我的答案,video_tag 方法状态的文档:源可以是您的公共视频目录中存在的完整路径或文件。我是认为 video_path 应该解决这个问题:) 希望
【解决方案2】:

@miaout17 是对的,你不能在 HTML 中使用字符串插值,所以你必须将它包装在 Erb 中(例如 )。

另外,您在下面的链接中缺少结尾“)”,这可能是它们不起作用的原因。

【讨论】:

    【解决方案3】:

    我知道了,你忘了使用 erb 语法。试试:

    <iframe width="560" height="315" src= "<%= #{@video.url} %>" frameborder="0" allowfullscreen></iframe>
    

    【讨论】:

    • 布兰登是对的。这次你错过了video_tag( @video.url之后的)
    猜你喜欢
    • 2021-12-04
    • 2012-06-25
    • 1970-01-01
    • 2011-08-10
    • 2011-02-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多