来自资产管道的(Rails)资产显示在index.html.erb文件中,但不显示在show.html.erb中

时间:2015-12-17 01:18:44

标签: ruby-on-rails ruby

我正在尝试从我的资产管道ni rails 4中获取图像和CSS样式。我有一个index.html.erb和一个show.html.erb。我在每个代码中都有完全相同的代码,但它在index.html文件中有效,但在show.html文件中却无效。

代码:

 <!-- Styles -->
<link rel="stylesheet" href="assets/styles-bluegreen.css" id="theme-styles">

 <a href="index.html" id="logo">
     <img src="assets/my-logo.png" alt="My Blog">
 </a>

我有完全相同的代码,因为我复制并粘贴了(是的,我知道这是针对rails dry政策)。我最初在_header.html.erb部分中有这个,并且代码在部分中也不起作用,所以我将确切的代码放在每个文件中,并且它在index.thml.erb中工作,但在节目中没有.html.erb。可能是什么原因?

注意,我也尝试过:

<link rel="stylesheet" href="stylesheets/styles-bluegreen.css" id="theme-styles">

<link rel="stylesheet" href="assets/stylesheets/styles-bluegreen.css" id="theme-styles">

这是我的资产管道:

asset pipeline

2 个答案:

答案 0 :(得分:1)

如果您复制粘贴代码段,则没有理由让它们的行为不同,除非您的某个视图(索引或显示)被缓存,而是直接将其提供给客户端而不是呈现。你能检查一下是否是这种情况吗?

顺便说一下,您确实应该使用stylesheet_link_tag,因为资源链接可能会因developmentproduction个环境而异。该助手将这些链接相应地呈现给环境。

答案 1 :(得分:0)

不是src="<%= asset_path('my-logo.png')%>"

然后是图片DataTable.NewRow()

此外,您必须将.erb添加到show.html文件名的末尾(所以show.html.erb)

这通常适合我。