有人可以分辨出红宝石在这里做了什么吗?
我想了解代码,以便将来适应它。 我想做的其中一件事就是让它适应Vimeo,但我需要了解发生了什么,这样我才能学到更多。
module ApplicationHelper
def youtube_embed(youtube_url)
if youtube_url[/youtu\.be\/([^\?]*)/]
youtube_id = $1
else
# Regex from # http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url/4811367#4811367
youtube_url[/^.*((v\/)|(embed\/)|(watch\?))\??v?=?([^\&\?]*).*/]
youtube_id = $5
end
%Q{<iframe title="YouTube video player" src="https://www.youtube.com/embed/#{ youtube_id }?rel=0&enablejsapi=1" frameborder="0" allowfullscreen></iframe>}
end
end
答案 0 :(得分:0)
这段代码尝试从视频上的任何YouTube链接构建嵌入youtube播放器的代码。
这个if youtube_url[/youtu\.be\/([^\?]*)/]
验证给定的网址是否有&#34; youtu.be /...."格式然后提取视频ID。 ($1
包含评估正则表达式的结果(/.../
之间的表达式)
如果字符串不是以&#39; youtu.be&#39;开头,则代码使用一些棘手的正则表达式(如果跟随链接到代码中的stackoverflow,则可以找到ypu的解释)然后从$5
获取视频ID。
然后它返回一个字符串,该字符串是该视频的嵌入youtube播放器的html代码。它使用#{youtube_id}