我正在使用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