मैं आपको अपने रेल 4 ऐप में ट्यूब को शामिल करने की कोशिश कर रहा हूं।रेल 4: आप ट्यूब को एकीकृत करना (youtube_it मणि)
मैं चाहता हूं कि उपयोगकर्ता एक वीडियो फ़ाइल अपलोड करने में सक्षम हों, जिसे मेरे ट्यूब चैनल पर पोस्ट किया जाएगा।
मैं Youtube_it मणि के साथ रेल 4 का उपयोग कर रहा हूं। मैं इस ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं: http://www.sitepoint.com/youtube-rails/
मेरी फ़ाइल संरचना में प्रोजेक्ट मॉडल और एक वीडियो मॉडल है। संघों हैं:
Project.rb
has_one :video
accepts_nested_attributes_for :video
Video.rb
belongs_to :project
मेरे वीडियो मेज एक बूलियन विशेषता कहा जाता है: include_video।
<%= f.collection_radio_buttons :include_video, [[true, ' Yes'], [false, ' No']], :first, :last, {:item_wrapper_class => 'fixradio'}, {:class => "radio-inline create-project response-project"} %>
अगर यह सच है, तो मैं जहाँ उपयोगकर्ताओं को वीडियो के साथ लिंक (: लिंक विशेषता कहा जाता है) को जोड़ने के क्षेत्र प्रकट करना चाहते हैं।
<%= f.file_field :link %>
वीडियो फॉर्म जिसमें मैं इन प्रश्नों से पूछता हूं वह आंशिक है। आंशिक परियोजना प्रपत्र के अंदर है जिसमें अन्य प्रश्न हैं। मेरे पास आंशिक दृश्य भी है जिसमें आपके ट्यूब क्लिप के लिए कंटेनर है (जैसा कि ट्यूटोरियल में दिखाया गया है)।
दृश्य आंशिक रूप में मेरे परियोजना शो पेज में शामिल है:
<% if @project.video.include_video? %>
<%= render 'videos/particulars' %>
<% end %>
मेरे परियोजना नियंत्रक है:
def new
@project = Project.new
@project.video = Video.new
end
def show
#authorise @project
@project = Project.find(params[:id])
@creator = User.find(@project.creator_id)
@creator_profile = @creator.profile
@project.video ||= Video.new
end
मेरे परियोजना नियंत्रक भी मेरे वीडियो मेज से सफेद लेबल गुण होते हैं (जैसा कि होता है मेरा वीडियो नियंत्रक
def project_params
params.require(:project).permit(
video_attributes: [:include_video, :link],
मेरा वीडियो नियंत्रक है:
def show
respond_with(@video)
end
def create
@video = Video.new(video_params)
@video.project_id = video_params[:project_id]
end
def video_params
params[:video].permit(:include_video, :link, :project_id)
end
मेरे video.rb है:
class Video < ActiveRecord::Base
# --------------- associations
belongs_to :project
belongs_to :program
belongs_to :proposal
belongs_to :profile
belongs_to :user
# --------------- scopes
# --------------- validations
YT_LINK_FORMAT = /\A.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*\z/i
validates :link, presence: true, format: YT_LINK_FORMAT
# --------------- class methods
# --------------- callbacks
before_create -> do
uid = link.match(YT_LINK_FORMAT)
self.uid = uid[2] if uid && uid[2]
if self.uid.to_s.length != 11
self.errors.add(:link, 'is invalid.')
false
elsif Video.where(uid: self.uid).any?
self.errors.add(:link, 'is not unique.')
false
else
get_additional_info
end
end
# --------------- instance methods
# --------------- private methods
def get_additional_info
begin
client = YouTubeIt::OAuth2Client.new(dev_key: ENV['YT_developer_key'])
video = client.video_by(uid)
self.title = video.title
self.duration = parse_duration(video.duration)
self.author = video.author.name
self.likes = video.rating.likes
rescue
self.title = '' ; self.duration = '00:00:00' ; self.author = '' ; self.likes = 0 ; self.dislikes = 0
end
end
def parse_duration(d)
hr = (d/3600).floor
min = ((d - (hr * 3600))/60).floor
sec = (d - (hr * 3600) - (min * 60)).floor
hr = '0' + hr.to_s if hr.to_i < 10
min = '0' + min.to_s if min.to_i < 10
sec = '0' + sec.to_s if sec.to_i < 10
hr.to_s + ':' + min.to_s + ':' + sec.to_s
end
end
मैं एक संबंधित समस्या थी और इस पोस्ट से मदद मिली: एक नई समस्या Rails 4 with You Tube
हालांकि, यह बनाया गया है और मैं नहीं जानता कि अगर यह एक समाधान की ओर मेरी प्रगति को आगे बढ़ा रहा है।
बिट जो नया है (दूसरे पोस्ट किए गए प्रश्न पर किसी उपयोगकर्ता द्वारा किए गए सुझाव से) वीडियो के लिए मेरे प्रोजेक्ट नियंत्रक को एक शो लाइन जोड़ना है। जब मैं यह कोशिश, मैं इस त्रुटि मिलती है:
Failed to save the new associated video.
जब मैं जो वीडियो प्रपत्र के भीतर आंशिक है एक पूरी तरह से नई परियोजना बनाने की कोशिश, मैं प्रपत्र सहेजने में कोई त्रुटि मिलती है। यह कहता है कि वीडियो लिंक मान्य नहीं है (मैं अपनी हार्ड ड्राइव से .mov फ़ाइल का चयन कर रहा हूं)।
मैंने फिर अपने वीडियो में सत्यापन बदल दिया।rb रहे हैं:
validates :link, format: YT_LINK_FORMAT, :allow_blank => true, :allow_nil => true
(यानी हटाने के:। उपस्थिति: सच है, और खाली और शून्य जोड़ने, लेकिन मैं अभी भी है कि त्रुटि मिलती है)
मैं इस पता लगाना दृष्टिकोण है?