Upload Video in a rails application

maxiperez picture maxiperez · Mar 28, 2011 · Viewed 13.2k times · Source

I need a plugin for "Upload Videos" in a rails application.

Can anyone give me an idea on how to do it?

Answer

Sujan Thakare picture Sujan Thakare · Mar 21, 2014

You can also use carrierwave gem

  • Add in your Gemfile: gem 'carrierwave'

    Run bundle install

  • Create an uploader for uploading video using carrierwave generator.

    rails g uploader video

  • It creates file video_uploader.rb in uploaders directory

  • Create a migration in model where you want attach the video or image, be careful with the migration name it should be like add_{column}_to_{model}

    rails g migration add_video_to_post video:string

  • Migrate database

    Run rake db:migrate

  • Add uploader to the model

    class Post < ActiveRecord::Base
          mount_uploader :video, VideoUploader  
    end
    
  • Add video parameter in PostController

    class PostController < ApplicationController
          .
          . 
          .
          def post_params
              params.require(:post).permit(:name,:video)
          end
    end
    
  • Add file attachment field in _forml.html.erb which is in views/posts

    <%=f.file_field :video%>
    
  • To view/stream the video

    <% @posts.each do |post|%>
        <%= post.name %>
        <%= video_tag post.video_url.to_s :controls =>true %>
    <%end%>
    

for more information carrierwave gem https://github.com/carrierwaveuploader/carrierwave and video tutorial http://railscasts.com/episodes/253-carrierwave-file-uploads