5

Paperclipがどのように機能するかを理解しているかどうかはわかりませんが、私が知る限り、アップロードを保存するデフォルトの場所は/publicフォルダーです。開発時に写真をアップロードすると、次の場所に正しく表示されます(ファイル構造で開くことができます)。

/public/bookmarks/:id/:style.:extension

ただし、そうするとbookmark.photo.url、次のようになります。

/system/bookmarks/thumbs/000/000/042/original/filename.png?1362768439

これが私のbookmark.rb

has_attached_file   :photo,
                        :styles => { :medium => ["512x512>", :jpg], :thumb => ["200x200#", :jpg] }
                        :default_url => "public/bookmarks/default/:style.png",
                        :path => "assets/content/bookmarks/:id/:style.:extension"

ここで何かが足りませんか?Paperclipは私のためにこのようなものを処理するためのものではありませんか、それとも構成に問題がありますか?

アップデート

最初の答えにとを追加する:pathと、次のようになります。:url

<img src="/assets/bookmarks/44/original.jpg?1362775508">

私が得るべきであるのに対し:

<img src="/bookmarks/44/original.jpg?1362775508">

しかし、私がオプションをコメントアウトすると:url、取得する代わりに:

これはデフォルトのサイズです

これは、デフォルトの見つからない画像サイズであり、次のようになります。

ここに画像の説明を入力してください

これは、ファイルシステムにある画像と同じ幅ですが、高さが間違っており、見つかりません。これは、クリーンキャッシュを備えたChromeとSafariの両方で発生します。URLにアクセスすると、404が表示されます。また、画像がファイルシステムに正しく保存されており、バックエンドから表示できることも確認できます。

4

2 に答える 2

1

あなたが説明する振る舞いは少し奇妙です。次のような方法で:urlと:pathの両方を設定することをお勧めします。

url: '/:class/:id/:style.:extension',
path: ':rails_root/public:url'

これは、画像が次の場所に保存されることを意味します。

"#{Rails.root}/public/bookmarks/:id/:style.:extension"

そして、URLはあなたに次のようなものを与えるでしょう:

/bookmarks/bookmarks/1/thumbs.png

これconfig.paperclip_defaultsは「application.rb」を使用して実行できるため、モデルごとに実行する必要はありません。また、別のパスまたはストレージが必要な場合は、「production.rb」でこれをオーバーライドできます。例:

  config.paperclip_defaults = config.paperclip_defaults.merge({
    storage: :s3,
    path: 'project_name/public:url'
  })
于 2013-03-08T19:37:57.857 に答える
0

最近私にも同じことが起こりました。:style代わりに持っていたので、404を取得してい:stylesました/app/models/mymodel.rb

class Pin < ActiveRecord::Base
    belongs_to :user
    has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
    validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end
于 2015-11-20T18:12:52.583 に答える