Rails 4不是image_url的正确路径

时间:2014-12-24 00:44:39

标签: css ruby-on-rails ruby ruby-on-rails-4

所以,我在rails项目上的下一个问题如下:我正在使用资产管道来提供我的资产。现在我想将内嵌 css包含在带有背景图像的视图中。因为资产管道,我只能使用rails提供的地面辅助工具。但问题是,每个助手(image_tag除外)都输出了错误的输出。

image_url('work-1.png')         # => /images/work-1.png
image_path('work-1.png')        # => /images/work-1.png
asset_url('work-1.png')         # => /work-1.png
asset_path('work-1.png')        # => /work-1.png
image_tag('work-1.png')         # => <img ..........> # Only right tag!

是的,that对我没有帮助。以及我发现的关于这个主题的所有其他问题。

很高兴知道这个问题是什么。谢谢!

2 个答案:

答案 0 :(得分:2)

image_tag帮助器是列表中唯一实际生成html标记的方法。

image_url助手实际上使用image_path助手来计算图像的完整路径(例如http://www.example.com/image/image.png

image_path助手生成图像的相对路径(例如/images/foo.png)

image_tag输出

image_tag("icon") # => <img alt="Icon" src="/assets/icon" />
image_tag("icon.png") # => <img alt="Icon" src="/assets/icon.png" />
image_tag("icon.png", size: "16x10", alt: "Edit Entry") # => <img src="/assets/icon.png" width="16" height="10" alt="Edit Entry" />
image_tag("/icons/icon.gif", size: "16") # => <img src="/icons/icon.gif" width="16" height="16" alt="Icon" />
image_tag("/icons/icon.gif", height: '32', width: '32') # => <img alt="Icon" height="32" src="/icons/icon.gif" width="32" />
image_tag("/icons/icon.gif", class: "menu_icon") # => <img alt="Icon" class="menu_icon" src="/icons/icon.gif" />

image_path输出

image_path("edit")                                         # => "/images/edit"
image_path("edit.png")                                     # => "/images/edit.png"
image_path("icons/edit.png")                               # => "/images/icons/edit.png"
image_path("/icons/edit.png")                              # => "/icons/edit.png"
image_path("http://www.example.com/img/edit.png")          # => "http://www.example.com/img/edit.png"

答案 1 :(得分:2)

另一个问题回答了我自己。

image_path帮助器中的路径错误。因此,如果您丢失了图像(资产管道无法找到,则帮助程序将回退到/images路径。

让我们想象一下我想在我的文档中包含ph/image-1.png的路径。 image_path('ph/image-1.png')将使用路径放置正确的目录。否则,如果您要使用image_path('image-1.png'),它将使用您要使用的图像前面的/images目录。但这无法找到。这是我的错。

要总结一下,以下是摘要:

image_path('ph/image-1.png')              # => /assets/ph/image-1.png
image_path('image-1.png')                 # => /images/image-1.png