2011-02-10 17 views
2

我想让用户嵌入youtube或vimeo视频在我们正在使用的Rails3应用程序的帖子中,并且现在都使用iframe。清洁助手似乎只允许您在全球范围内将标签列入白名单 - 此外,youtube的内嵌框架具有一致的类别,但vimeo不具备。只允许在降价Youtube/Vimeo iframes

你会如何去从这两个网址的白名单嵌入,但不允许他们否则?

+0

你有没有想过这个?如果是这样,我很感兴趣。 – BasicObject 2011-04-09 03:16:17

回答

0

我不确定如何使用sanitize方法将标记列入白名单,但您始终可以通过另一种方法进行筛选,并专门使用正则表达式检查src,并且只有在匹配youtube时才写出src。

def santize_iframe(text) 
    text.gsub(/\<iframe(src="(.+?)")?\>(.+?)\<\/iframe\>/m) do 
    if $2.include? "youtube.com" 
     ... logic to display video 
    else 
     "" 
    end 
    end 
end 
0

http://github.com/rgrove/sanitize/

这是一项伟大的工程,与YouTube上的例子中嵌入允许为好。 Youtube最近更改为iframe,我向他们提交了一个“过滤器”示例:

T_YOUTUBE_IFRAME = lambda do |env| 
node  = env[:node] 
return nil unless (env[:node_name] == 'iframe') 

if node['src'] =~ /^http:\/\/www.youtube.com\/embed\// 
    node['src'] += "?test" 

    return {:node_whitelist => [node]} 
end 
end