NoMethodError rails

时间:2013-06-04 21:41:47

标签: ruby-on-rails controller renderpartial

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

/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

我有一个音轨控制器,但我认为它正在尝试使用用户控制器..

您需要的代码或信息让我知道,谢谢。

1 个答案:

答案 0 :(得分:1)

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

如果您的问题出在youtube部分,那么这就是您的答案:

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

在您的视图部分中输入此代码,并将youtube_source替换为youtube_url

如果您直接从网址区域使用youtube网址,则必须使用网址进行一些自定义。

E.g。

来自网址区域的普通youtube网址:

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

在iframe标签中,我们需要这样的网址:

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

您可以看到两个链接的差异(嵌入和观看?v)

基本上有一点是两个链接中的conman,即末尾的代码 h5euwZEE4Mo 。 因此,您需要从url中提取此代码,以便提取可以使用此代码的代码。

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

然后你可以在iframe链接中使用这个网址。

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