我们在一个应该显示图像的引擎下有一个视图。此图像(Button-Blank-Red-icon.png)保存在" app / assets / images / engine_name / Button-Blank-Red-icon.png
的引擎路径下尝试显示此视图时出现以下错误。
ActionController :: RoutingError(没有路由匹配[GET]" / images /<> engine_name> /Button-Blank-Red-icon.png"):
显示在引擎的app / assets / images / engine_name /下存储的图片的正确方法是什么?
以下是视图代码:
<img src="<%= RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator] %>" height="15" width="15" />
r.step_qties.last.ontime_indicator
会返回绿色&#39;红色&#39;之一。和&#39;黄色&#39;
常量RED_GREEN_YELLOW_CLS的定义位于引擎的config / initializers /下的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'
}
一个带图像标记的工作解决方案(参见railscasts.com中的第277集):
<%=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'
}
答案 0 :(得分:1)
您似乎正在通过AssetUrlHelpers显示图片。您的视图代码需要更改为以下内容:
<img src="<%= image_path(RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator]) %>"
height="15" width="15" />
image_path
将正确添加路径的assets
部分以及资产管道生成的哈希值,以便您获得正确的网址。
答案 1 :(得分:1)
正确的网址应为&#34; / assets /&lt;&gt; engine_name&gt; /Button-Blank-Red-icon.png"因为当rails编译资产时,它只会将/ images / stylesheets和/ javascript的所有内容混合在一起,用于公共/资产中的所有宝石和app / assets目录。它只会复制&#34;&lt;&gt; engine_name&gt;&#34;文件夹及其内容。
目前尚不清楚:&#34; / images /&lt;&gt; engine_name&gt; /Button-Blank-Red-icon.png"来自,我不知道如何从你展示的代码中获得它。
尝试将您使用的内容更改为&#34; / assets /&lt;&gt; engine_name&gt; /..."它应该工作。
您可以尝试手动编译资产并查看文件的位置,只需执行&#34;捆绑执行rake资产:编译RAILS_ENV =生产&#34;,您可以安全地删除/公共/资产后保留它很干净。
答案 2 :(得分:1)
你试过asset_path
帮助吗?
<%= image_tag(asset_path("engine_name/#{RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator]}"), size: '23x23') %>
将engine_name替换为引擎应用程序的实际名称。
答案 3 :(得分:1)
来自引擎的图片可通过以下方式访问:
http://localhost:3000/assets/engine_name/image.png
就像你说的那样
<img src="<%= asset_path(RED_GREEN_YELLOW_CLS[r.step_qties.last.ontime_indicator]) %>" height="15" width="15" />
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'
}
会工作。
P.S。我发现r.step_qties.last.ontime_indicator个人侮辱火车残骸。 :)