我们有一个引擎下的视图,它应该显示一个图像。此映像(icon.png)保存在引擎的"app/assets/images/engine_name/Button-Blank-Red-icon.png路径下。
当我试图显示这个视图时,我得到了下面的错误。
操作控制器::RoutingError(没有路由匹配获得"/images/<>engine_name>/Button-Blank-Red-icon.png"):)
如何正确地显示存储在引擎应用程序/资产/图像/engine_name/下的图像?
以下是视图代码:
<img src="<%= RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator] %>" height="15" width="15" />r.step_qties.last.ontime_indicator返回“绿色”、“红色”和“黄色”之一
常量RED_GREEN_YELLOW_CLS的定义在my_constant.rb中,在引擎的配置/初始化器/:
RED_GREEN_YELLOW_CLS = {
'green' => '/Button-Blank-Green-icon.png',
'red' => '/Button-Blank-Red-icon.png',
'yellow' => '/Button-Blank-Yellow-icon.png'
}一种带有图像标记的工作解决方案(指episode#277 in railscasts.com):
<%=image_tag(RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator], size: '23x23') %>不需要封锁。
my_constant.rb是:
RED_GREEN_YELLOW_CLS = {
'green' => 'engine_name/Button-Blank-Green-icon.png',
'red' => 'engine_name/Button-Blank-Red-icon.png',
'yellow' => 'engine_name/Button-Blank-Yellow-icon.png'
}发布于 2014-04-07 04:09:02
看起来你是通过AssetUrlHelpers来显示你的图像的。您的视图代码需要更改为以下内容:
<img src="<%= image_path(RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator]) %>"
height="15" width="15" />image_path将正确地添加路径的assets部分,以及由资产管道生成的哈希,以便您获得正确的url。
发布于 2014-04-07 04:21:51
正确的url应该是"/assets/<>engine_name>/Button-Blank-Red-icon.png“,因为当rails编译资产时,它只会将所有gems的/images、/stylesheets和/javascript的所有内容和应用程序/资产dir混合到公共/资产中。它只会复制"<>engine_name>“文件夹和那里的内容。
不清楚这是从哪里来的:"/images/<>engine_name>/Button-Blank-Red-icon.png“是从哪里来的,我不知道如何从您显示的代码中获得它。
尝试将使用的内容更改为“/assets/<>engine_name>/.”而且它应该能工作。
您可以尝试手动编译资产并查看文件的去向,只需执行"bundle exec资产:编译RAILS_ENV=production",就可以在测试之后安全地删除/public/assets,以保持其干净。
发布于 2014-04-10 14:13:43
你试过asset_path助手了吗?
<%= image_tag(asset_path("engine_name/#{RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator]}"), size: '23x23') %>将engine_name替换为引擎应用程序的实际名称。
https://stackoverflow.com/questions/22800709
复制相似问题