Rails 3 で、パイプラインのアセットをdefault_url
Carrierwaveのアップローダーとして使用するには、次のようにします。
class MyUploader
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper
def default_url
# For Rails 3.1+ asset pipeline compatibility:
asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
end
end
Rails 4 では、パイプラインはsprockets-rails gem/railtie に抽象化されているため、上記は次のようになります。
初期化されていない定数 Sprockets::Helpers
sprockets-rails gemを見ると、代替ヘルパーはSprockets::Rails::Helper
. しかし、このモジュールが含まれていると、次のようにasset_path("fallback/default.png")
返されます。
# wrong:
"/fallback/default.png"
私が期待するアセットおよびダイジェスト対応の URL ではありません。
"/assets/fallback/default-b3beee1588afe2ae582c64888cd007db.png"
asset_path
ビューの外で正しい動作を得るにはどうすればよいですか?