2012-07-08 72 views
3

你好我一直在開發一個Web應用程序我想給用戶上傳個人資料圖片的可能性。我花了很多時間試圖獲得載波和霧與s3工作,但沒有設法實現它。你可以給我的任何幫助都非常讚賞。Rails圖像上傳到S3與carrierwave和霧

更新: 我一直試圖擺弄它,從我可以告訴該文件永遠不會上升,圖像值始終爲空的Users控制器。

我的上傳者類。

class PhotoUploader < CarrierWave::Uploader::Base 
    storage :fog 
    def store_dir 
     "uploads/#images/#{model.class.to_s.underscore}" 
    end 
end 

霧初始化

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    :aws_access_key_id  => 'xxx', 
    :aws_secret_access_key => 'yyy', 
    } 
    config.fog_directory = 'pictures_dev' 
    config.fog_public  = true 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 
end 

用戶模型

class User 
    include Mongoid::Document 
    .... 
    has_one :photo 
    .... 
end 

照片模式

class Photo 
include Mongoid::Document 
attr_accessible :name, :image 

field :image, :type => String 
field :name, :type => String 

belongs_to :user 

mount_uploader :image, PhotoUploader 
end 

照片控制器

class PhotoController < ApplicationController 

    def update 
    @photo = Photo.find(params[:id]) 
     if @photo.update_attributes(params[:image]) 
     flash[:success] = "Your have updated your settings successfully." 
     else 
     flash[:error] = "Sorry! We are unable to update your settings. Please check your  fields and try again." 
    end 
    redirect_to(:back) 
    end 

上傳形式

= form_for @photo, :html => {:multipart => true} do |f| 
    %p 
    %label Photo 
    = image_tag(@user.image_url) if @photo.image? 
    = f.file_field :image 
    = f.submit 

這是我能想到的,是相關的,如果有人需要我發佈更多的代碼,我會很高興。 我真的很難倒,任何幫助表示讚賞。

+0

有沒有在日誌中的任何錯誤? – 2012-07-08 21:35:31

+0

您可能已將S3存儲桶放置在錯誤的區域? – 2012-07-08 22:31:03

+0

克里斯托弗,S3桶在正確的區域。凱爾,沒有任何錯誤。圖像根本不會被上傳。 – EnriqueC 2012-07-08 22:37:58

回答

0

我覺得你有與

if @photo.update_attributes(params[:image]) 

問題嘗試這樣的東西,而不是

if @photo.update_attributes(image: params[:photo][:image]) 
+0

謝謝,但它仍然無法正常工作 – EnriqueC 2012-07-08 22:40:15

相關問題