2013-06-04 4 views
0

Я строю боковые проекционные рельсы. Одна из возможностей, которую я пытаюсь реализовать, - это текстовое поле, в котором пользователь отправляет ссылку на 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 

У меня есть контроллер треков, но я думаю, что он пытается использовать контроллер Users ..

больше кода или информация, что вам нужно, дайте мне знать, спасибо.

+0

является @track, созданный в действии шоу вашего пользовательского контроллера? – Ghar

ответ

1

С какой проблемой вы сталкиваетесь? Если ваша проблема связана с NoMethodError, то только тогда дайте мне знать более подробную информацию, например, при ее возникновении и сообщении об ошибке, например, в консоли.

Если ваша проблема с YouTube частью, то это ваш ответ:

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

Введите этот код в виде части и заменить YOUTUBE_SOURCE с youtube_url

Если вы с помощью Youtube URL непосредственно из URL регионе, тогда вам нужно выполнить некоторую настройку с помощью url.

E.g.

Normal YouTube URL из URL-адресов в регионе:

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

И в IFrame теге мы требуем URL, как это: (? Встраивании и смотреть v)

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

Вы можете увидеть разницу в обоих звеньев

В принципе одна вещь - мошенник по обеим ссылкам, т.е. код в конце h5euwZEE4Mo. Итак, вам нужно извлечь этот код из URL-адреса, чтобы извлечь код, который вы можете использовать.

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

Тогда вы можете использовать этот url в iframe link this.

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