ruby-on-rails - Carrierwave 在控制台上给出错误

标签 ruby-on-rails ruby file-upload carrierwave

我在我的 Rails 应用程序中安装了 Carrierwave Gem。

我的 uploader 类

class VoiceUploader < CarrierWave::Uploader::Base

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

end

我的模型类

require 'carrierwave/orm/activerecord'

class PulseFeedback < ActiveRecord::Base
    belongs_to :tablet
    mount_uploader :voice, VoiceUploader
end

但是每当我在 Rails 控制台中使用 store 方法时,我都会收到此错误。

2.2.0 :001 > v = VoiceUploader.new
=> #<VoiceUploader:0x000000038dc8b0 @model=nil, @mounted_as=nil>

2.2.0 :002 > v.store!("/home/raghu/Music/ajeeb.mp3")
    CarrierWave::FormNotMultipart: CarrierWave::FormNotMultipart
        from /home/raghu/.rvm/gems/ruby-2.2.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/cache.rb:120:in `cache!'
        from /home/raghu/.rvm/gems/ruby-2.2.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:56:in `store!'

我也不明白为什么 model 和 Mounted 为零,即使我在模型类中定义了 mounter

最佳答案

您应该存储文件,而不是字符串

class VoiceUploader < CarrierWave::Uploader::Base

  storage :file

  def store_dir
    "uploads"
  end

end

v = VoiceUploader.new

File.open("/home/raghu/Music/ajeeb.mp3") do |f|
  v.store!(f)
end

或者尝试使用模型来实现

PulseFeedback.create({
  voice: File.open("/home/raghu/Music/ajeeb.mp3")
})

关于ruby-on-rails - Carrierwave 在控制台上给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30789738/

相关文章:

ruby-on-rails - 查找没有关联或关联属性值 !=? 的记录

css - 您将如何用代码片段替换设计表单?

php - 处理Laravel 4上传大文件异常

html - 使用 GWT 一次上传多个文件

javascript - form_tag onComplete 事件不起作用

ruby-on-rails - 将 before_filter 方法添加到 rails 3 中列表的末尾

ruby - 更新faSTLane失败: signet requires Ruby version >= 2. 4.0

ruby-on-rails - rails destroy scaffold leaves 后 table

ruby-on-rails - 如何从 Capistrano 部署脚本执行捆绑命令

Spring 休息 : The request was rejected because no multipart boundary was found