0
我正在使用Fog並將其上傳到S3。上傳在開發過程中工作正常,但在製作時,它給了我這個錯誤:Carrierwave生產失敗:無法將nil轉換爲字符串
TypeError (can't convert nil into String):
app/controllers/pictures_controller.rb:29:in `create'
(該行是圖片被保存的位置)。這是堆棧跟蹤的結束。
當我進入控制檯,並做到:
p = Picture.new(image: "~/rails_apps/my_app/current/app/assets/images/rails.png")
它讓我在生產以下產品:
CarrierWave::FormNotMultipart: CarrierWave::FormNotMultipart
...但使開發沒有抗議。也許這是一個線索。
任何想法爲什麼上傳不生產?
這裏是我的carrierwave.rb初始化:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], # required
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']#, # required
}
if Rails.env.production?
config.fog_directory = 'mydir' # required
else
config.fog_directory = 'mydir-development' # required
end
config.fog_public = true # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
爲什麼不直接看app/controllers/pictures_controller.rb第29行? –
嘿@Mörre,謝謝你檢查這個問題。該行讀取「if @ picture.save」。乾杯。 – bevanb
因此,由於該行中沒有字符串,我猜棧跟蹤會稍微長一點......?沒有必要回應,我相信你可以在問自己之前做更多的事情(而且比我們更容易):)即使有人立刻給你答案,我建議你自己試着解決這個問題。我可能會因此迴應,我不知道你的情況或CarrierWave,所以如果這不是適當的建議,請不要受到侮辱。 –