2013-06-04 126 views
0

我正在构建一个侧面项目rails应用程序。我试图实现的一个功能是text_field,用户提交YouTube链接,并创建嵌入式视频以显示在自己的页面上。我遇到的NoMethodError当我去到/用户/ 2,我希望你们可以给一个新手手:NoMethodError rails

/users/show.html.erb

<h1>Users#show</h1> 
<p>Find me in app/views/users/show.html.erb</p> 

<%= render partial: 'shared/track_form' %> 

的意见/共享/ _track_form.html.erb:

<%= form_for(@track) do |f| %> 
<div class="field"> 
    <%= f.text_area :content, placeholder: "Upload a youtube song URL..." %> 
</div> 
<%= f.submit "Post", class: "btn btn-large btn-primary" %> 

错误:undefined method 'model_name' for NilClass:Class

track.rb

class Track < ActiveRecord::Base 
    attr_accessible :content 
    belongs_to :user 

    validates :content, presence: true 
end 

我有一个轨道器,但我认为这是试图使用用户控制器..

了代码,或者你需要让我知道的信息,谢谢。

+0

是@track在用户控制器的show动作中创建的吗? – Ghar

回答

1

你面临什么问题? 如果您的问题仅与NoMethodError有关,请告知我更多详细信息,例如何时发生以及错误报告(即控制台部分)。

如果你的问题是与YouTube的一部分,那么这就是你的答案:

<iframe width='450' height='250' src='youtube_source' frameborder='0' allowfullscreen></iframe> 

在视图部分中输入验证码,并与您youtube_url取代YOUTUBE_SOURCE

如果您是直接使用YouTube网址的网址地区,那么你必须做一些定制与网址。

E.g.从URL区域

普通YouTube网址:

http://www.youtube.com/watch?v=h5euwZEE4Mo 

而在iframe标签,我们需要的URL是这样的:(?嵌入和观看V)

http://www.youtube.com/embed/h5euwZEE4Mo 

你可以看到在这两个环节的差异

基本上一件事情是conman在这两个链接即代码末尾h5euwZEE4Mo。 所以你需要从url中提取这段代码,以便提取你可以使用的代码。

video_url = (/([\w-]{11})/.match(url)).to_s 

然后,你可以在iframe中使用这个URL链接这个。

<iframe width='450' height='250' src='http://www.youtube.com/embed/<%=video_url%>' frameborder='0' allowfullscreen></iframe>