0

无法解决 rails 4 应用程序中的问题。请帮帮我。

在“显示”操作的控制器中,我尝试渲染视图“纺织品”:

render "textile" if @wallcovering.material.id == 2 || @catalog.id == 10

在“textile.html.erb”视图中,我有:

<%= image_tag "#{@catalog.title}/#{@wallcovering.title}.jpg", id: "textile_image" %>

但是在生产中的页面源中有一个普通的路径,没有md5,并且找不到图像。甚至

<%= asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg") %>

向我展示了简单的路径。但我在这个视图中有另一个标签:

<%= link_to catalog_wallcovering_path(@catalog, wallcovering), data: { remote: true, bgpath: asset_path("#{@catalog.slug}/#{wallcovering.title}.jpg") }%>

和asset_path在这里工作正常。

我的应用程序中还有其他一些控制器和视图,资产在哪里可以正常工作。

我预编译了我的资产

RAILS_ENV=production bundle exec rake assets:precompile

然后将公共资产上传到生产服务器。

我哪里错了?

更新:

#{@catalog.title}将= "Caesar"更改为#{@catalog.slug}= "caesar",现在可以使用了。有什么玄机?

4

1 回答 1

0

因此,asset_path如果文件不存在,将返回您传入的相同字符串。在你的情况下asset_path("#{@catalog.slug}/#{wallcovering.title}.jpg")是有效的,asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg")并不是因为它们是不同的路径。当您访问远程文件时,路径区分大小写。我不确定,也许如果您在 Mac 上运行服务器,这会起作用,因为 Mac 不区分大小写。希望这有助于澄清问题。

于 2021-01-12T16:18:07.600 回答