我正在使用angularjs和導軌。我想在我的應用程序上傳歌曲如何允許參數導軌控制器
下面是上傳歌曲的我JSON數據使用angularjs
{
"file"=>#<ActionDispatch::Http::UploadedFile:0x007f20ec024608 @tempfile=#<Tempfile:/tmp/RackMultipart20151106-6349-1impdro.mp3>,
@original_filename="01 - 2 States - Offo [DJMaza.Info].mp3",
@content_type="audio/mp3",
@headers="Content-Disposition: form-data; name=\"file\"; filename=\"01 - 2 States - Offo [DJMaza.Info].mp3\"\r\nContent-Type: audio/mp3\r\n">,
"event_id"=>"19"
}
但我沒有得到正確的參數在我的控制器
class Api::V1::PlaylistsController < ApplicationController
def create
@event = Event.find(params[:event_id])
@playlist = @event.playlists.create(:file)
redirect_to event_path(@event)
end
end
我有我的應用程序中的事件和一個事件包含許多歌曲。
,但它給了我下面的錯誤
ArgumentError (When assigning attributes, you must pass a hash as an argument.):
app/controllers/api/v1/playlists_controller.rb:5:in `create'
下面是我的角度視圖和控制器
<div ng-controller="SongController">
<input type="file" nv-file-select uploader="uploader"/><br/>
<ul>
<li ng-repeat="item in uploader.queue">
Name: <span ng-bind="item.file.name"></span><br/>
<button ng-click="item.upload()">upload</button>
</li>
</ul>
</div>
.controller('SongController', ['$scope','FileUploader','$stateParams',function($scope, FileUploader,$stateParams) {
$scope.uploader = new FileUploader({url: '/events/'+$stateParams.id+'/playlists'});
}]);
播放模式
class Playlist < ActiveRecord::Base
belongs_to :event
mount_uploader :file, SongUploader
end
播放模式
create_table "playlists", force: :cascade do |t|
t.string "song", limit: 255
t.integer "event_id", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我正在使用carrierwave在rails中上傳。
嘗試改變'@playlist = @ event.playlists .create(:file)'到'@playlist = @ event.playlists.create(params [:file])' – Pavan