使用Carrierwave保存图像会保存已安装的上传器,但不会保存网址

时间:2016-08-14 01:25:51

标签: ruby-on-rails amazon-s3 carrierwave

上传者正在保存,没有网址。

t = Ticket.last
=> #<Ticket id: 14, user_id: 14, name: nil, latitude: #<BigDecimal:7fe4f84fb9d0,'0.297608026E2',18(18)>, longitude: #<BigDecimal:7fe4f84fb890,'-0.953695062E2',18(18)>, created_at: "2016-08-14 01:15:06", updated_at: "2016-08-14 01:15:06", photo: nil>
irb(main):002:0> t.photo
=> #<PhotoUploader:0x007fe4f84f8168 @model=#<Ticket id: 14, user_id: 14, name: nil, latitude: #<BigDecimal:7fe4f84fb9d0,'0.297608026E2',18(18)>, longitude: #<BigDecimal:7fe4f84fb890,'-0.953695062E2',18(18)>, created_at: "2016-08-14 01:15:06", updated_at: "2016-08-14 01:15:06", photo: nil>, @mounted_as=:photo>
irb(main):003:0> t.photo.url
=> nil

我的控制器:

class RegistrationsController < ApplicationController
    skip_before_filter :verify_authenticity_token

  def create
    @user = User.new(user_params)

    if @user.save       
      puts "Saved the user"
        @ticket = Ticket.new(ticket_parameters)
      image_data = params[:ticket][:photo]
      puts "image_data #{image_data}"
      # @ticket.photo = image_data
      puts "MY TICKET PHOTO: #{@ticket.photo}"
      @ticket.save    

private
    def user_params
      params.require(:user).permit!
    end

    def ticket_parameters
      params.require(:ticket).permit!
    end

在我的Ticket模型中

mount_uploader :photo, PhotoUploader

我的上传者:

class PhotoUploader < CarrierWave::Uploader::Base
  storage :fog

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


  def extension_white_list
    %w(jpg jpeg gif png)
  end

end

我的carrierwave初始化程序:

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     ENV['AWS_ID'],                        # required
    aws_secret_access_key: ENV['AWS_SECRET'],                        # required

  }
  config.fog_directory  = 'handled-tickets'                          # required
  config.fog_public     = false                                        # optional, defaults to true
end

1 个答案:

答案 0 :(得分:0)

尝试将config.fog_public更改为true。另外,请检查您的s3权限。

相关问题