NoMethodError rails



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

/用户/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

。rb

class Track < ActiveRecord::Base
  attr_accessible :content
  belongs_to :user
  validates :content, presence: true
end

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

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

你面临什么问题?如果您的问题与NoMethodError有关,那么请让我知道更多细节,例如何时发生和错误报告,即控制台部分。

如果你的问题是youtube部分,那么这是你的答案:

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

在视图部分输入以下代码,并将youtube_source替换为youtube_url

如果你直接从url区域使用youtube url,那么你必须对url做一些自定义。

来自url区域的正常youtube url:

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

在iframe标签中我们需要这样的url:

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

你可以看到两个链接的区别(嵌入和观看?v)

基本上在两个链接中都有一件事是错误的,即末尾的代码h5euwZEE4Mo。所以你需要从url中提取这些代码,为了提取代码,你可以使用这个。

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

那么你可以在iframe中使用这个url link this.

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

最新更新