【问题标题】:Can't save Image to database using CarrierWave Direct无法使用 CarrierWave Direct 将图像保存到数据库
【发布时间】:2013-10-15 16:44:40
【问题描述】:

我正在使用带有 Sidekiq 的 CarrierWave Direct 在后台将图像上传到 Amazon S3。图片正在按预期上传,但我似乎无法将图片记录添​​加到数据库中。当我提出错误时,我会得到 filename can't be blank

以下是相关代码:

app/uploaders/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWaveDirect::Uploader

  include CarrierWave::MimeTypes
  process :set_content_type

end

app/controllers/admin/images_controller.rb

  def index
    @uploader = Image.new.filename
    @uploader.success_action_redirect = new_admin_project_image_url(@project)
    render "new"
  end

  def new
    @image = Image.new
    @image.filename = params[:key]
    @image.imageable = @project
    unless @image.save
      raise @image.errors.to_yaml
    end
  end

app/models/image.rb

class Image < ActiveRecord::Base
  attr_accessible :imageable_id, :imageable_type, :filename

  validates :filename, presence: true
  validates :imageable_id, presence: true
  validates :imageable_type, presence: true

  belongs_to :imageable, polymorphic: true

  mount_uploader :filename, ImageUploader
end

app/views/admin/images/new.html.erb

<%= direct_upload_form_for @uploader do |f| %>
  <p><%= f.file_field :filename %></p>
  <p><%= f.submit "Upload Image" %></p>
<% end %>

【问题讨论】:

    标签: ruby-on-rails carrierwave


    【解决方案1】:

    我问了一个类似的问题,它返回了一个不同的错误here

    这两种情况的解决方案是相同的。 carrierwave_direct 使用“文件名”作为方法。因此,将数据库中的列命名为filename 正是造成这里问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多