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 に答える