默认图像的 CarrierWave full url
CarrierWave full url for default image
我正在使用 CarrierWave for image uploads on a rails-api 应用程序,该应用程序又被 backbone.js
客户端应用程序使用。我注意到,当没有可用的默认图像时,它 returns /assets/default.png
。它又必须是 http://dev-server:3000/assets/default.png
。这是我的配置设置:
# config/environments/development.rb
CarrierWave.configure do |config|
config.asset_host = "http://dev-server:3000"
end
# Image Uploader
....
def default_url
"/assets/default.png"
end
我哪里错了?
[编辑(更新的答案)]
正在更新我在 rails 配置中设置 asset_host
的答案。
Rails.application.configure do
.
.
config.asset_host = 'http://dev-server:3000'
end
然后就可以使用助手的asset_url
方法或者image_url
方法了。由于这是一张图片,我建议将图片放在 app/assets/images
文件夹中并使用 image_url
.
ActionController::Base.helpers.image_url("default.png")
这将为您提供以下内容 URL:
http://dev-server:3000/images/default.png
你可以在控制台试试。
[旧答案]
查看 Carrierwave Documentation,您的 default_url
方法似乎应该如下所示(Carrierwave 不会自动将 asset_host 附加到默认 url):
def default_url
ActionController::Base.helpers.asset_path("default.png")
end
我假设 asset_host
在您的 Rails 配置中设置正确。如果没有,请这样做。
我通过查看 carrierwave
的代码解决了这个问题。这就是我最终做的:
def default_url
"#{asset_host}#{ActionController::Base.helpers.asset_path("default.png")}"
end
还要确保在各自的环境文件中包含 asset_host
配置。
我也在使用 Rails 5 API 和 Carrierwave。
一个幸运的猜测让它为我工作。
我里面有一个文件app/uploaders/image_uploader.rb
。
asset_host
配置设置在此文件中(至少对我有效):
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
...
def asset_host
return "http://localhost:3000"
end
end
希望这对以后遇到此问题的其他人有用。
我会推荐你的一些想法:
我:把主机放在你的环境中z.B。 development.rb
config.asset_host = 'http://localhost:3000'
II:在config/initializers/carrierwave.rb
中创建文件
# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :file
config.asset_host = ActionController::Base.asset_host
end
III:将您的上传者编辑为:
def default_url
"#{asset_host}/images/fallback/" + [version_name, "default.png"].compact.join('_')
end
IV:重启你的服务器
我正在使用 CarrierWave for image uploads on a rails-api 应用程序,该应用程序又被 backbone.js
客户端应用程序使用。我注意到,当没有可用的默认图像时,它 returns /assets/default.png
。它又必须是 http://dev-server:3000/assets/default.png
。这是我的配置设置:
# config/environments/development.rb
CarrierWave.configure do |config|
config.asset_host = "http://dev-server:3000"
end
# Image Uploader
....
def default_url
"/assets/default.png"
end
我哪里错了?
[编辑(更新的答案)]
正在更新我在 rails 配置中设置 asset_host
的答案。
Rails.application.configure do
.
.
config.asset_host = 'http://dev-server:3000'
end
然后就可以使用助手的asset_url
方法或者image_url
方法了。由于这是一张图片,我建议将图片放在 app/assets/images
文件夹中并使用 image_url
.
ActionController::Base.helpers.image_url("default.png")
这将为您提供以下内容 URL:
http://dev-server:3000/images/default.png
你可以在控制台试试。
[旧答案]
查看 Carrierwave Documentation,您的 default_url
方法似乎应该如下所示(Carrierwave 不会自动将 asset_host 附加到默认 url):
def default_url
ActionController::Base.helpers.asset_path("default.png")
end
我假设 asset_host
在您的 Rails 配置中设置正确。如果没有,请这样做。
我通过查看 carrierwave
的代码解决了这个问题。这就是我最终做的:
def default_url
"#{asset_host}#{ActionController::Base.helpers.asset_path("default.png")}"
end
还要确保在各自的环境文件中包含 asset_host
配置。
我也在使用 Rails 5 API 和 Carrierwave。
一个幸运的猜测让它为我工作。
我里面有一个文件app/uploaders/image_uploader.rb
。
asset_host
配置设置在此文件中(至少对我有效):
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
...
def asset_host
return "http://localhost:3000"
end
end
希望这对以后遇到此问题的其他人有用。
我会推荐你的一些想法:
我:把主机放在你的环境中z.B。 development.rb
config.asset_host = 'http://localhost:3000'
II:在config/initializers/carrierwave.rb
中创建文件# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :file
config.asset_host = ActionController::Base.asset_host
end
III:将您的上传者编辑为:
def default_url
"#{asset_host}/images/fallback/" + [version_name, "default.png"].compact.join('_')
end
IV:重启你的服务器