アプリに動画を埋め込もうとしていて、gem panda '1.6.0' を使用しています。パンダストリームとレールの統合ガイドに従い、次のコードを作成しました。
controllers:
-------------
class BoothVideosController < ApplicationController
before_filter :init_booth_video
def show
@original_video = @video.panda_video
@h264_encoding = @original_video.encodings["h264"]
render :template => 'booth_video/booth_video', :layout =>
'sponsored_group_manage_sub_menu'
end
def new
@video = BoothVideo.new
render :layout => 'sponsored_group_manage_sub_menu'
end
def create
@video = BoothVideo.create!(params[:video])
redirect_to :action => :show, :id => @video.id
end
def init_booth_video
@group = Group.find(params[:group_id])
@video=@group.booth_video
end
end
class PandaController < ApplicationController
def authorize_upload
payload = JSON.parse(params['payload'])
upload = Panda.post('/videos/upload.json', {
file_name: payload['filename'],
file_size: payload['filesize'],
profiles: "h264",
})
render :json => {:upload_url => upload['location']}
end
end
model:
------
class BoothVideo < ActiveRecord::Base
belongs_to :group
validates_presence_of :panda_video_id
def panda_video
@panda_video ||= Panda::Video.find(panda_video_id)
end
end
View
-----
<% content_for(:page_title, "Create a New Booth Video") -%>
<% form_for(:booth_video,:url => group_booth_video_path, :html => {:id =>
"new_booth_video", :multipart => true}) do |f| %>
<h5>New Booth Video</h5>
<fieldset>
<input type="hidden" name="panda_video_id"/>
<label for="title">Title</label><br />
<%= f.text_field :title, :size => 32, :placeholder => "Title for the new booth
video" %><br /><br />
<div class='progress'>
<span id="progress-bar" class='bar'></span>
</div>
<div id="browse">Choose file</div>
<%=f.submit "Upload video" %>
<% end %>
application.js ファイルに panda アップローダの js も含めました。ファイル アップローダーを表示できますが、実際にファイルを参照して選択すると、実際にはロードされず、進行状況バーにも進行状況が表示されません。
- 動画がアップロードされないのはなぜですか?
- create アクションはチュートリアルで params[:video] に言及していますが、アップロードされたビデオの「新しい」フォームには param がありません。これをどのように認識しますか?
助けてください!前もって感謝します...