0

Rails v3.2.11、Ruby v1.9.3p0、Paperclip AFAIKの最新の安定バージョンでWindowsを使用しています。

ファイル名:「2011-rosé-750mL.png」

Web サイトを更新しようとしていますが、その過程で、ペーパークリップに保存されているすべての画像 (オリジナル) を別の場所に移動する必要があります。したがって、基本的には、各元のファイルを読み取り、添付ファイルを設定してから、モデルで保存を実行しています。明らかに、paperclip はアップロードされたファイルにアクセント付きの文字を付けて保存しても問題はありませんが、アクセント付きの文字を含む名前を参照して新しいファイルを保存すると、問題が発生します。

例:

w = Wine.find(19)
w.photo = File.open("D:/Files/Websites/rails3.website/public/images/store/products/original/2011-rosé-750mL.png", 'rb')
w.save :validate => false

上記の名前のファイルに到達するまで、ほとんどのアップグレード プロセスは機能します。表示されるエラー: No such file or directory - .../2011-rosé-750mL

ここに画像の説明を入力

私が考えることができるのは、名前のファイルの文字エンコーディングに関係しているということだけです。つまり、保存時にペーパークリップがファイルを読み込もうとすると、正しい文字が使用されません。File.open(source, 'rb')実際には機能します (エラーは発生しません)。モデルを保存するときにこのエラーが発生するだけです。エラーメッセージを見ると、実行時に読み込んでいるディレクトリではなく、オリジナルの保存ディレクトリを参照していFile.open()ます。そのため、それはどこか上にありますが、一見私のコントロール外です(Paperclipの内部)。

4

2 に答える 2

0

trh の応答に基づいて、関数を使用してすべてのファイルの名前を変更することにしましたActiveSupport::Inflector.transliterate。また、Paperclip ファイルはデフォルトで文字変換されるようになりました (ファイル名にアクセント付き文字を使用しなくなりました)。

于 2013-09-29T23:40:40.350 に答える