Ruby on rails Carrierwave未上载-未显示错误

Ruby on rails Carrierwave未上载-未显示错误,ruby-on-rails,ruby-on-rails-3,file-upload,amazon-s3,carrierwave,Ruby On Rails,Ruby On Rails 3,File Upload,Amazon S3,Carrierwave,我整晚都在做这件事,毫无意义。我正在修改一个旧的照片web应用程序,使其包含相册。我将“失败”(基本上是图像)作为一个嵌套的相册资源。我正在使用carrierwave将文件上载到S3存储桶 奇怪的是:对于相册模型(相册图像),上传效果非常好,但是对于失败的模型,上传效果不好 我不明白为什么现在它是一个嵌套资源会成为一个问题。这不是一个显示问题,因为某种原因,它通过了表单罚款,通过了验证罚款,没有抛出错误,它重定向到失败#索引,就像它成功一样,但在db或S3中没有任何内容 代码如下。所有代码在 失

我整晚都在做这件事,毫无意义。我正在修改一个旧的照片web应用程序,使其包含相册。我将“失败”(基本上是图像)作为一个嵌套的相册资源。我正在使用carrierwave将文件上载到S3存储桶

奇怪的是:对于相册模型(相册图像),上传效果非常好,但是对于失败的模型,上传效果不好

我不明白为什么现在它是一个嵌套资源会成为一个问题。这不是一个显示问题,因为某种原因,它通过了表单罚款,通过了验证罚款,没有抛出错误,它重定向到失败#索引,就像它成功一样,但在db或S3中没有任何内容

代码如下。所有代码在

失效模式

class Fail < ActiveRecord::Base
  attr_accessible :description, :image, :remote_image_url, :fail_title, :tag_list,    :processed, :youtube_url, :album_id
make_voteable
acts_as_taggable

belongs_to :album

mount_uploader :image, ImageUploader


validates            :description, length: { :maximum => 200 }
validates            :album_id, presence: true
validates            :image, presence: true
    validates            :fail_title, presence: true, length: { :maximum => 50 }
    validate                   :maximum_amount_of_tags


def maximum_amount_of_tags
    number_of_tags = tag_list_cache_on("tags").uniq.length
    errors.add(:base, "Please only add up to 5 tags") if number_of_tags > 5
end

before_save :update_attachment_attributes

def update_attachment_attributes
  if image.present? && image_changed?
    self.content_type = image.file.content_type
    self.file_size = image.file.size
  end
end

def next
    user.fails.where("id > ?", id).order("id ASC").first
end

def prev
    user.fails.where("id < ?", id).order("id DESC").first
end


end
routes.rb

resources :albums do
 get 'tags/:tag', to: 'fails#index', as: :tag
 resources :fails do
   member do
     post :up_vote
   end
 end
调试散列(当我尝试上载时,它会变成红色,但我没有看到任何会导致错误的内容)

以下是调试信息:

{"utf8"=>"✓",   "authenticity_token"=>"Hz6Gl95ultYDNIEjQioIckB8JXQwhiMxXIM9jrfqd5Q=", "fail"=>{"fail_title"=>"tester", "image"=>#<ActionDispatch::Http::UploadedFile:0x56195e8 @original_filename="pic19.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"fail[image]\"; filename=\"pic19.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:C:/Users/Kinertia/AppData/Local/Temp/RackMultipart20131125-10428-m2ktp2>>, "description"=>"", "tag_list"=>"test"}, "commit"=>"Create Fail", "controller"=>"fails", "action"=>"index"}
{“utf8”=>“✓",   "真实性令牌“=>”hz6gl95Ultydniejqioickb8jxqwhimxxi9jrfqd5q=“,”失败“=>{”失败标题“=>”测试仪“,”图像“=>”,”描述“=>”,”标签列表“=>”测试“},”提交“=>”创建失败“,”控制器“=>”失败“,”操作“=>”索引“}
如果还需要什么,请告诉我,我会把它放在这里。谢谢你的帮助

你试过了吗

默认情况下,它会无声地失败,这有点糟糕

我还建议尝试在rails控制台中创建记录,这有助于将问题隔离到模型层或视图/控制器层。在您的情况下,这看起来像:

Fail.create!(
  image: File.open('path/to/known/file.jpg'),
  album_id: 1,
  fail_title: 'Title'
)

不起作用:/I我将它们与我的其余验证放在fail.rb上,这就是它们应该去的地方,对吗?我将调试信息添加到问题中,但无法使用控制台创建它。下面是回答:很抱歉:=>#你能用
试试吗方法,这样您就可以看到哪里出了问题?见上面。我放:Fail.create!(失败的标题:“tester”,图片:“C:/profile.jpg”,a>,但这会把我踢出控制台吗?
{"utf8"=>"✓",   "authenticity_token"=>"Hz6Gl95ultYDNIEjQioIckB8JXQwhiMxXIM9jrfqd5Q=", "fail"=>{"fail_title"=>"tester", "image"=>#<ActionDispatch::Http::UploadedFile:0x56195e8 @original_filename="pic19.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"fail[image]\"; filename=\"pic19.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:C:/Users/Kinertia/AppData/Local/Temp/RackMultipart20131125-10428-m2ktp2>>, "description"=>"", "tag_list"=>"test"}, "commit"=>"Create Fail", "controller"=>"fails", "action"=>"index"}
validates_integrity_of :avatar
validates_processing_of :avatar
validates_download_of :avatar
Fail.create!(
  image: File.open('path/to/known/file.jpg'),
  album_id: 1,
  fail_title: 'Title'
)