1

所以我创建了一个网站,人们可以在该网站上发布链接。根据链接的内容,帖子的呈现方式会有所不同。例如,带有指向 youtube.com/somevideo 链接的帖子将呈现嵌入视频。以 JPG 结尾的链接将显示该图像。

在我看来,我写了以下内容

    <% link_type = extract_content_from_url(post.link)  %>
    <div class ="preview_of_post">
    
        <% if post.link %>
            <% if link_type == "youtube" %>
                <%= youtube_embed(post.link) %>
            <% end %>
            <br />
            <%= link_to (post.link), (post.link) %>
        <% end %>

在我的助手中,我有这个:

module PostsHelper
  def extract_content_from_url(url) 
    if url != ""
      unless url.include?("http://")
        post.link = "http://#{post.link.downcase}"
      end
    else
      return "nil"
    end
        
    if url.include? == "youtube.com/watch" #youtube link
      return "youtube"
    end
    
    if File.extname(url) == ".gif" || File.extname(url) == ".jpg" || 
       File.extname(url) == ".png" || File.extname(url) == ".jpeg"
       return"picture"
    end
  end
  
  
  def youtube_embed(youtube_url)
    if youtube_url[/youtu\.be\/([^\?]*)/]
      youtube_id = $1
    else
      youtube_url[/^.*((v\/)|(embed\/)|(watch\?))\??v?=?([^\&\?]*).*/]
      youtube_id = $5
    end
    render(:inline=> "<iframe title='YouTube video player' width='640' height='390' src='http://www.youtube.com/embed/#{ youtube_id }' frameborder='0' allowfullscreen></iframe>")
  end
end

运行我的代码时,出现以下错误:

在此处输入图像描述

有什么建议么?谢谢。

4

1 回答 1

1

url.include? == "youtube.com/watch"无效。include?是一个接受参数的方法。你可能的意思是url.include? "youtube.com/watch"

于 2012-09-27T02:08:56.163 回答