无法解决rails 4 app中的问题。请帮帮我。
在'show'动作的控制器中,我尝试渲染视图'textile':
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
然后将公共资产上传到生产服务器。
我哪里错了?
UPD:
将#{@catalog.title}
=“Caesar”更改为#{@catalog.slug}
=“caesar”,现在可以使用了。什么是神秘的?
答案 0 :(得分:0)
因此,如果文件不存在,asset_path
将返回您传入的相同字符串。在您的情况下,asset_path("#{@catalog.slug}/#{wallcovering.title}.jpg")
有效而 asset_path("#{@catalog.title}/#{@wallcovering.title}.jpg")
无效,因为它们是不同的路径。当您访问远程文件时,路径区分大小写。我不确定,也许如果您在 Mac 上运行服务器,这会起作用,因为 Mac 不区分大小写。
希望这有助于澄清问题。