我在config / initializers中有一个带有以下内容的constants.rb文件:
DEFAULT_IMAGES = {
profile: ActionController::Base.helpers.image_url('v2/default_profilepic.jpg'),
banner: ActionController::Base.helpers.image_url('v2/profile-banner.jpg'),
missing: ActionController::Base.helpers.image_url('v2/missing.png'),
}
当我尝试在代码中的某个地方甚至在控制台中调用DEFAULT_IMAGES时,我会在没有哈希的情况下返回图像。它应该做什么,我的期望是错的吗?
DEFAULT_IMAGES => {:profile =>“http://localhost:3000/assets/v2/default_profilepic.jpg”,:banner =>“http://localhost:3000/assets/v2/profile-banner.jpg”,:missing =>“http://localhost:3000/assets/v2/missing.png”}
我希望像这样的东西“/assets/v2/missing-d38d4bdbf9f2cf313e346a844de298c0.png”
答案 0 :(得分:1)
将您的代码放入特定环境文件或application.rb中的after_initialize块:
config.after_initialize do
DEFAULT_IMAGES = {
profile: ActionController::Base.helpers.image_url('v2/default_profilepic.jpg'),
banner: ActionController::Base.helpers.image_url('v2/profile-banner.jpg'),
missing: ActionController::Base.helpers.image_url('v2/missing.png'),
}
end
缺点是你需要通过应用程序的命名空间引用你的常量:
Foo::Application::DEFAULT_IMAGES
答案 1 :(得分:1)
您也可以试试Proc
proc { ActionController::Base.helpers.image_path('v2/missing.png') }.call
答案 2 :(得分:0)
config.asset_host = 'http://localhost:3000'
将此行添加到application.rb并检入rails console。
答案 3 :(得分:0)
这是修复
DEFAULT_IMAGES = {
profile: ActionController::Base.helpers.image_path('v2/default_profilepic.jpg'),
banner: ActionController::Base.helpers.image_path('v2/profile-banner.jpg'),
missing: ActionController::Base.helpers.image_path('v2/missing.png'),
}
您需要根据预期数据使用*_path
,而不是*_url
。
image_path
:计算图片资产的路径。