大家:在将其发布到Stackoverflow之前,我已经搜索了错误,因此无需指向我:groups.google.com/forum/?fromgroups=#!topic/carrierwave/这不是一个相同的问题。
我正在使用Carrierwave,以便用户可以将文件上传到我的Rackspace容器中。但是,当我从站点提交(在本地计算机上,仍处于测试模式)时,我收到 Fog::Storage::Rackspace::NotFound 应用程序/ Controller /authors_controller.rb:8:出现“更新”错误。我的Rackspace容器称为kontainer.ofstuff。这是我的代码:
pic_uploader.rb:
class PicUploader < CarrierWave::Uploader::Base
include Rails.application.routes.url_helpers
storage :fog
def store_dir
"#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
模型author.rb
class Author < ActiveRecord::Base
attr_accessible :stuff, :profilepic
mount_uploader :pic, PicUploader
def dostuff
end
end
carrierwave.rb在config / initializers目录中
CarrierWave.configure do |config|
config.storage = :fog
config.fog_credentials = {
:provider => 'Rackspace',
:rackspace_username => 'myusername',
:rackspace_api_key => '98765asecretnumber3'
})
config.fog_directory = 'kontainer.ofstuff'
config.fog_host = 'https://34567secretnumberiiiii.ssl.cf2.rackcdn.com'
end
Controller authors_controller.rb
class AuthorsController < ApplicationController
def update
@author = Author.find(params[:id])
@booklist = Book.where(:author_id => @author.id)
#line 7
if @author.update_attributes(params[:author])
sign_in @author
redirect_to @author
else
render 'profileinfo'
end
end
end
edit.html.erb:
<%= f.file_field :pic %>
<%= f.submit "Save Author Info" %>
当我将此代码“上传” /存储到文件中时,此方法工作正常。也许f.submit与Carrierwave不兼容?如果没有,我在哪里可以找到正确的提交代码?
任何想法是什么麻烦?
最佳答案
我遇到了同样的问题,但是对我来说,我需要多次对所有区域使用相同的名称制作容器。我不知道为什么之后会起作用,但是我想可以尝试一下吗?
更新11-7-2012
自从我回答以来,Carrierwave有了一些更新。通过一些反复试验,我能够获得更稳定的上传。这是我所做的:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'Rackspace',
:rackspace_username => '[Your Rackspace Username]',
:rackspace_api_key => '[Your Rackspace API key]'
}
config.fog_directory = '[The name of the container you created]'
if Rails.env.production? || Rails.env.staging?
config.asset_host = '[The Public HTTP CDN url for the container]'
end
end
注意:我将上传器配置为在生产或暂存环境时使用storage:fog。否则,我将使用默认的本地文件系统。
需要注意的主要事情是,carrierwave将配置“fog_host”更改为“asset_host”。
关于ruby-on-rails-3 - 使用Carrierwave上传到Rackspace时出现Fog::Storage::Rackspace::NotFound错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12922980/