0

私はもともとペーパークリップのデフォルト設定に含まれていました

:url => "/some_path/:basename.:extension"

ただし、アップロードしているすべてのファイルに拡張子があるわけではありません。その場合、「。」は必要ありません。(構成の basename と extension の間) に存在する必要があります。だから私はこのようなことをしたいと思います:

:url => lambda { |i| "/some_path/:basename#{".:extension" if i.extension}" }

私はそれを試してみましたが、「Proc を String に変換できません」というエラーが表示されました。これは、ペーパークリップがスタイルやプロセッサのように URL の動的構成をサポートしていないことを示しています。他にどのようにこれを行うことができるかについてのアイデアはありますか?

4

1 に答える 1

1

簡単な答えは、交換することです

:basename.:extension

:filename

より詳細な答えは、ベース名、ファイル名、および拡張子はすべて補間であり、「paperclip/interpolations」(paperclip の lib ディレクトリ内) で定義されている任意の補間を使用するか、独自に定義することができるということです。

例えば:

Paperclip.interpolates(:temperature) do |attachment, style|
  attachment.instance.city.temperature(:today)
end

has_attached_fileもちろん、あなたの街のオブジェクトもそのモデルbelongs_to :cityが今日の気温を知っていると仮定します。

于 2012-11-14T20:09:48.440 に答える