如何显示从数据库调用的youtube嵌入链接

时间:2014-09-15 00:39:43

标签: ruby-on-rails-4 youtube

我有一个应用程序,我想用于我的教学工作室,在那里我创建了学生可以查看的课程。课程特定于每个学生,因此他们通过:user_id(用户has_many课程,课程belongs_to用户)链接。我可以根据用户提出具体的课程,但我无法弄清楚的一个部分是如何正确显示视频(youtube)链接。我想要的是保存链接以及课程的文本。文本和标题以及所有内容现在都很好,但视频不会显示嵌入代码并在iframe窗口中引发路由错误。

这是我的_lesson部分代码。 “video_url”是数据库中列的名称。

_lesson.html.erb

<li>
  <span class="content"> 
    <%= lesson.title %><br />
    <%= lesson.lesson_notes %>
     <iframe width="490" height="275" src="<%= lesson.video_url %>" frameborder="0"  allowfullscreen></iframe>
  </span>
</li>

这是我的节目视图中的代码。

show.html.erb

<% if @user.lessons.any? %>
 <h3> Lessons (<%= @user.lessons.count %>)</h3>
<ol class="lessons">
  <%= render @lessons %>
</ol>
  <%= will_paginate @lessons %>
<% end %>

我得到的错误在

之下
  No route matches [GET] "/users/www.youtube.com/embed/CFF0mV24WCY"

我有点理解发生了什么,但不是真的。我想我不确定为什么它正在寻找那条路线而不是只是嵌入代码然后显示视频。它会显示课程中的所有其他文本和内容,以便正常工作。有没有一种简单的方法来显示链接,以便将视频与其一起嵌入?我已经搜索了不少但我发现的所有内容都只是将代码嵌入到我可以做的html中,但这需要根据用户进行更改,因此必须将其与课程信息的其余部分一起从数据库中拉出来。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

src需要知道协议,因此,如果您不包含http://,则资源管理器会假定给定的src位于您的实际路径旁边。
一个糟糕的解决方案可能是使用原始字符串添加协议:

src="http://<%= lesson.video_url %>"

但更好的解决方案是adding a filter,以便在保存字段时检查协议是否包含在内。