【问题标题】:Paperclip does not uploads image回形针不上传图片
【发布时间】:2014-04-04 02:06:34
【问题描述】:

Ruby '1.9.3'

导轨'3.2.11'

回形针", "~> 4.1"

imagemagick-6.8.0-10

class Card < ActiveRecord::Base
  attr_accessible :logo_front
  attr_accessor :logo_front_file_name, :logo_front_content_type, :logo_front_file_size, :logo_front_updated_at

 has_attached_file :logo_front, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
 validates_attachment_content_type :logo_front, :content_type => /\Aimage\/.*\Z/
end


 Started POST "/cards" for 127.0.0.1 at 2014-04-03 19:44:10 -0600
 Processing by CardsController#create as HTML
 Parameters: {"utf8"=>"✓", "authenticity_token"=>"/e7XdW+Gne5WWQjuVjqZ4jMyBgvAQb5c/uBs46VKJ/4=",
"card"=>{"name"=>"test2", "category_id"=>"1", "card_number_length"=>"10",
"logo_thumbnail"=>"test2", "logo_front"=>#<ActionDispatch::Http::UploadedFile:0x007fa06d4741d0      @original_filename="test2.png",
 @content_type="image/png", @headers="Content-Disposition: form-data; name=\"card[logo_front]\";
 filename=\"test2.png\"\r\nContent-Type: image/png\r\n", 
 @tempfile=#<File:/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/RackMultipart20140403-49476- 1k3g1i5>>, "logo_back"=>"test2", "conditions"=>"test2"}, 
"commit"=>"Create Card"}



User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Command :: file -b --mime-type '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/fdcbe7cb00785a9f22e3850e31ee87ae20140403-49476-ldaz7u'
Command :: identify -format '%wx%h,%[exif:orientation]' '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]' 2>/dev/null
Command :: identify -format %m '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]'
Command :: convert '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]' -auto-orient -resize "300x300>" '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp9020140403-49476-nno48v'
Command :: file -b --mime '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp9020140403-49476-nno48v'
Command :: identify -format '%wx%h,%[exif:orientation]' '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]' 2>/dev/null
Command :: identify -format %m '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]'
 Command :: convert '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp90[0]' -auto-orient -resize "100x100>" '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp9020140403-49476-1wtsixp'
Command :: file -b --mime '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/a42d7b7bd0e5e0a24fe6bd1d68f19fb920140403-49476-klgp9020140403-49476-1wtsixp'
(0.1ms)  begin transaction
Command :: file -b --mime-type '/var/folders/8d/lj5_232s33b2m6rf8tcwbgmm0000gn/T/265d61fad999f984d48a4e3dca5009d820140403-49476-1s5gzch'
SQL (13.3ms)  INSERT INTO "cards" ("card_number_length", "category_id", "code_type", "conditions", "created_at", "logo_back", "logo_front", "logo_thumbnail", "name", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)  [["card_number_length", 10], ["category_id", 1], ["code_type", nil], ["conditions", "test2"], ["created_at", Fri, 04 Apr 2014 01:44:11 UTC +00:00], ["logo_back", "test2"], ["logo_front", nil], ["logo_thumbnail", "test2"], ["name", "test2"], ["updated_at", Fri, 04 Apr 2014 01:44:11 UTC +00:00]]

一切看起来都很好,但是当 SQL 插入操作执行时,它会插入带有空值的记录 ["logo_front", nil]

是不是我的目录路径有问题?

config/environments/development.rb

Paperclip.options[:command_path] = "/usr/local/bin/"

[更新] 我刚刚意识到文件已成功保存在以下目录中:

public/system/cards/logo_fronts/000/000/005/medium/test/png

问题仍然是file_name没有保存在DDBB中

【问题讨论】:

    标签: ruby-on-rails ruby file-upload paperclip


    【解决方案1】:

    您的cards 表中似乎有字段logo_front。这是不正确的。

    在您的Card 模型中,您正确地将logo_front 定义为has_attached_file 属性。

    但是,您不应将logo_front 直接添加到cards 表中。相反,Paperclip 需要在 cards 表中有 4 个特定字段:

    logo_front_file_name
    logo_front_file_size
    logo_front_content_type
    logo_front_updated_at
    

    Paperclip 提供了一个迁移生成器来执行此操作:

    rails generate paperclip card logo_front
    

    注意:在撰写本文时,带有 Rails 4.0.4 的 Paperclip 的当前版本中存在一个错误,即生成器无法工作 (https://github.com/thoughtbot/paperclip/issues/1495)。如果您遇到protected method 'migration_file_name' 错误,您始终可以手动创建迁移:

    class AddLogoFrontColumnsToCards < ActiveRecord::Migration
      def self.up
        add_attachment :cards, :logo_front
      end
    
      def self.down
        remove_attachment :cards, :logo_front
      end
    end
    

    【讨论】:

    • 你说得对,格雷姆。我使用迁移器生成器创建了一个新列:rails generate paperclip card logo 并添加 :logo_file_name, :logo_content_type, :logo_file_size, :logo_updated_at 到 attr_accessible 谢谢!
    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2013-09-09
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多