ruby-on-rails – Rails 4:整合You Tube(youtube_it gem)
我试图把你的管插入我的rails 4应用程序.
我希望用户能够上传一个视频文件,然后将其发布在我的管道上. 我正在使用Rails 4和Youtube_it宝石.我一直在试图遵循这个教程: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"} %> 如果是真的,那么我想透露用户添加视频链接的字段(属性称为:link). <%= 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文件). 然后我将我的video.rb中的验证更改为: validates :link,format: YT_LINK_FORMAT,:allow_blank => true,:allow_nil => true (即删除:存在:true,并添加空白和零,但我仍然收到该错误) 如何解决这个问题? 解决方法
我不会使用youtube_it ruby?? gem,因为它使用了v2版的YouTube API(从2015年4月20日起不支持).我建议使用yt ruby?? gem(使用最新版本的YouTube API).
A tutorial on the yt gem and why you shouldn’t use youtube_it 您的问题很可能与尝试使用YouTube API不支持的youtube_it功能有关.重构代码似乎有很多工作要做,但是我确定它可以节省你很多头痛的东西(尤其是因为youtube_it看起来没有很好的维护). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- datatables 添加复选框及序号列及使用ajax请求
- 2.14 比较运算符和区间运算符 [Swift原创教程]
- c – 应该std :: copy()或std :: move()的空范围需要有效的
- Flex获取html容器传递的URL参数值
- Flex4中使用HTTPService与后台交互绑定到DataGrid控件
- NSObject到NSString Objective-C
- xml – 只找到第一个出现的XPath表达式是什么?
- ruby-on-rails – 如何通过rails-assets安装modernizr 3?
- xml – xsd:boolean元素类型接受“true”但不是“True” 我
- Swift 数组的常用操作